【问题标题】:ActionScript3 font compilation transcoding errors under LinuxLinux下ActionScript3字体编译转码错误
【发布时间】:2011-03-24 07:56:22
【问题描述】:

因此,在 Windows 上的 Flash Builder 中,我的应用程序和所有嵌入字体都可以正常编译。

但是当我尝试在我的生产 Linux 服务器上构建它时(通过使用 make 的命令行上的 Makefile),在对字体进行转码时编译失败:

/home/me/MyFlexProject/SomeModule/src/Fonts.as(29): Error: exception during
transcoding: Font for alias 'HelveticaRounded LT Std Blk' with plain weight
and style was not found at:
file:/home/me/MyFlexProject/SomeModule/src/assets/fonts/HelveticaRoundedLTStd-Black.otf

            [Embed(source='/assets/fonts/HelveticaRoundedLTStd-Black.otf',
            fontName='HelveticaRounded LT Std Blk',
            mimeType='application/x-font',embedAsCFF='false')]

我尝试过的事情:

  • 通过“-managers=flash.fonts.AFEFontManage”使用不同的字体管理器。

  • 使用不同的字体,但它会给出与通常错误略有不同的版本,请参阅:

    Error: exception during transcoding: Font for alias 'xxx' with plain weight and style was not found at: file:...

查看使用fontforge 的字体,我想我已经将问题缩小到一个事实,即在字体文件中显然同时定义了“Windows”和“Mac”名称。这似乎是可能的罪魁祸首,因为在 Windows 上字体编译得很好,但在 Linux 上它再也找不到同名的字体。但是,即使我切换到在 Linux 上使用“Mac”名称,我仍然会收到同样的错误,即无法找到具有请求名称的字体。

我想找出导致无法进行转码的原因。

这里是相关字体的链接:http://jetlib.com/HelveticaRoundedLTStd-Black.otf

为了更好的衡量,这里是 Fonts.as:

package ...
{
    import flash.text.Font;

    public class Fonts
    {
        [Embed(source='/assets/fonts/HelveticaRoundedLTStd-Black.otf',
        fontNam e='HelveticaRounded LT Std Blk', fontWeight='normal',
        mimeType='application/x-font',embedAsCFF='false')]

        private static var _font1:Class;

        /**
         * register fonts with the font manager to be
         * used in modules and sub applications
         */
        public static function registerFonts():void
        {
            Font.registerFont(_font1);
        }
    }
}

非常感谢任何帮助、想法或见解!

使用 fontWeight='bold' 输出:

/home/me/MyFlexProject/SomeModulesrc/Fonts.as(23): Error: exception during transcoding: Font for alias 'HelveticaRounded LT Std Blk' with bold weight was not found at: file:/home/me/MyFlexProject/SomeModulesrc/assets/fonts/HelveticaRoundedLTStd-Black.otf

                [Embed(source='/assets/fonts/HelveticaRoundedLTStd-Black.otf',fontName='HelveticaRounded LT Std Blk',fontWeight='bold',mimeType='application/x-font',embedAsCFF='false')]

/home/me/MyFlexProject/SomeModulesrc/Fonts.as(23): col: 3: Error: unable to build font 'HelveticaRounded LT Std Blk'

                [Embed(source='/assets/fonts/HelveticaRoundedLTStd-Black.otf',fontName='HelveticaRounded LT Std Blk',fontWeight='bold',mimeType='application/x-font',embedAsCFF='false')]
  ^

/home/me/MyFlexProject/SomeModulesrc/Fonts.as(23): col: 3: Error: Unable to transcode /assets/fonts/HelveticaRoundedLTStd-Black.otf.

使用 fontWeight='normal' 输出:

/home/me/MyFlexProject/SomeModulesrc/Fonts.as(23): Error: exception during transcoding: Font for alias 'HelveticaRounded LT Std Blk' with plain weight and style was not found at: file:/home/me/MyFlexProject/SomeModulesrc/assets/fonts/HelveticaRoundedLTStd-Black.otf

                [Embed(source='/assets/fonts/HelveticaRoundedLTStd-Black.otf',fontName='HelveticaRounded LT Std Blk',fontWeight='normal',mimeType='application/x-font',embedAsCFF='false')]

/home/me/MyFlexProject/SomeModulesrc/Fonts.as(23): col: 3: Error: unable to build font 'HelveticaRounded LT Std Blk'

                [Embed(source='/assets/fonts/HelveticaRoundedLTStd-Black.otf',fontName='HelveticaRounded LT Std Blk',fontWeight='normal',mimeType='application/x-font',embedAsCFF='false')]
  ^

/home/me/MyFlexProject/SomeModulesrc/Fonts.as(23): col: 3: Error: Unable to transcode /assets/fonts/HelveticaRoundedLTStd-Black.otf.

【问题讨论】:

  • 将其关闭为不可合理解决。

标签: apache-flex actionscript-3 actionscript fonts embed


【解决方案1】:

无论有没有fontWeight='bold',它都会失败吗?您的两个 sn-ps 可变地包含和省略该行。两者之一是正确的。

编辑:显然它在这两种情况下都失败了。我什么都没有。

【讨论】:

  • 我已经尝试过两种方式,但都失败了。我已经包含了上面的错误输出,因为这些评论框太小了。
  • 嗯,我们已经过了我的门槛,抱歉。您可以尝试的一件事是在 FontForge 中另存为 TTF——我之前在嵌入 Linux 的 OTF 中遇到过奇怪的错误。
  • BTW,你是说你之前在Linux上成功嵌入编译过TTF字体?如果是这样,您是否有机会向我指出它们,以便我可以尝试将它们嵌入到我的应用中作为测试?
  • 我成功地从 Linux 嵌入了 OTF 和 TTF 字体。但是,我注意到有时 OTF 字体上的字形与 Windows/Mac 版本相比有点奇怪,另外我注意到当我在 Linux 上嵌入 OTF 时,Flash 忽略了我指定要嵌入的字符范围——它总是嵌入完整的 Unicode 范围,使我的 SWF 膨胀 100k+。不幸的是,我无法提供示例文件,因为我们所有的字体都已获得许可。
  • 这很有帮助。非常感谢。
【解决方案2】:

我只能猜测,因为我还没有尝试在 Linux 上嵌入字体。但据我所知,字体管理器的行为取决于操作系统,因为每个操作系统都有不同的字体 API,呈现给 Flex 的底层 Java 框架。 fontWeight 参数可能因平台而异。

您是否尝试过将“Black”作为 fontWeight 的值? 如果我的猜测是正确的,字体管理器无法向系统询问此字体的重量,并试图在 otf.xml 中找到重量。但是 otf 将“黑色”定义为它的重量。 我希望这会有所帮助,亲切的问候...

【讨论】:

  • 是的,我尝试将“Black”和“black”作为 fontWeight,但 AS3 似乎无法识别它并且仍然给出与以前相同的错误(输出表明它仍在寻找“正常”字体重量)。 :s
  • 嗯......在我用尽想法之前的最后一个猜测:您是否尝试过将 fontWeight 与 fontStyle 属性一起使用?在您的情况下:“fontWeight='bold', fontStyle='normal'”还是“fontWeight='black', fontStyle='normal'”?字体嵌入很棘手。
【解决方案3】:

我在 RedHat 5.5 版上遇到了同样的问题。 我搬到了 Ubuntu 11,它编译没有问题。

【讨论】:

    【解决方案4】:

    确保您没有覆盖默认的 flex 配置文件。 如果您需要一些配置属性,请附加它们 在额外的编译器参数中: -load-config+=configFile.xml 而不是 -load-config configFile.xml 它解决了我们的麻烦

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      相关资源
      最近更新 更多