6

我已经看到很多与 Flash 中的字体嵌入相关的问题,但我似乎无法找到我的问题的答案。

我从字体 swf 加载字体并在高级别注册它们,以便它们可以在子 swf 中使用。问题是子 swf 也可能嵌入这些字体,但没有明确地嵌入,这意味着它们只是嵌入,因为子 swf 中有使用字体的某些字符的字段。这意味着子项中的文本字段使用不完整的嵌入字体,而不是在父项或任何级别的祖父项中注册的嵌入完整集。这也意味着可能成为这个孩子的孩子的 swfs 不会获得完整的字体。

我的问题:有什么方法可以在编译时告诉 flash 在任何情况下都不要将字体嵌入到 swf 中?如果没有,是否有从编译的 swf 中删除嵌入字体的工具?

到目前为止,这是我考虑过/注意到的一些事情:

  • 似乎每个 Font 类都与一个 ApplicationDomain 相关联。(确认这一点会有所帮助)
  • 在文本字段上使用设备字体不会导致嵌入任何字体。(但对我来说不是一个选项,因为我需要这些字段在运行时从父 swf 嵌入字体。)
  • 我找不到注销字体或简单地告诉加载的子 swf 使用父字体的方法,这对于应用到加载的子 swf 很有用。
  • 可以将子项加载到不同的上下文中,这将允许字体的父定义覆盖子定义。(或者会有两个定义,如果有,哪个优先?)
  • 从子库中加载资源并将它们添加到舞台将获得字体的父定义。(这是有道理的,因为资产是在子域之外创建的)
  • 一个可能的解决方案可能是不向文本字段添加任何字符以编译 swf,但这也不是一个真正的选项,因为我需要使用任何字体的静态文本。

我已经开始对我脑海中可能不正确的问题进行定义,因此,如有必要,请退后几步,让我对问题有不同的看法。到目前为止,我上面提出的问题似乎是正确的问题,如果有解决方案,我所有的问题都会消失。

谢谢!

4

3 回答 3

0

原来这是我的 Flash Professional 版本的一个错误。我进行了更新,现在可以使用运行时共享字体。我可能会将共享字体指向字体的错误 url,然后字体将来自父应用程序域,因为它们没有编译到子 swfs 中。我现在使用的是 Flash Professional CS5.5 11.5.1。我使用的是 CS5.5 11.5.0。

http://forums.adobe.com/message/3926344

感谢 Adob​​e 浪费我的时间。

于 2012-10-27T00:11:58.127 回答
0

如果我的理解是正确的,那么您是否想删除/注销所有作为已加载但嵌入另一个 swf 的特定字体版本不完整的字体?

嵌入的每个字体都会创建一个类,通过 Loader 类加载的每个 swf 默认情况下都加载到其自己的应用程序域中,以防止命名空间冲突,但您可以使用 »loader 强制加载器将所有内容加载到当前应用程序域中Loader 的 load() 方法的 context« 参数。因此,您可以尝试强制在同一命名空间中相互覆盖类,但是您无法控制要丢弃的类,这意味着您无法检查哪种字体具有更多字形。(也许它只是抛出错误而不是覆盖并且根本不运行,我对此不太确定)。

另一方面,您应该质疑字体实际上是如何嵌入到孩子的 swf 文件中的。除了将字体嵌入为:

在 *.fla 文件中作为»库符号«,或者在 flashbuilder 或 flex 的代码中,如下所示: [Embed(source="c:/windows/fonts/verdana.ttf", fontFamily="Verdana", embedAsCFF="false")],

或这个:

@font-face {
    src: url("../assets/MyriadWebPro.ttf");
    fontFamily: myFontFamily;
    advancedAntiAliasing: true;
}

在 mxml 文件中。所以(这就是我猜的)生成的类的结果名称取决于开发人员给出的»font-family«属性(甚至更多设置),这意味着即使相同的字体嵌入了类的两倍 -名称可能因设置而异。

也没有Font.unregisterFont()方法,所以如何管理这仍然是一个好问题,以防万一你可能会以某种方式找到相同的 Font 类(也许 RegExp 成为一个友好的助手)。

我认为要正确解决此问题,您需要在编译时进行控制,使用基于 xml 的 *.xfl 项目文件可能会有所帮助,但即使引用的字体文件可以具有不同的名称。

好问题,祝你好运

于 2012-10-23T23:07:53.147 回答
0

我在使用 Flash 字体时遇到了很多问题。在不同浏览器以不同方式呈现的 html 上,这仍然是一个问题。

无论如何,对于 flash,我构建了这个对我有很大帮助的工具包。检查如何自定义字体。如果您执行这些步骤,我很确定问题将得到解决。

https://github.com/tbwa/AS3-Toolkit/tree/master/src/com/utils/text

于 2012-10-25T00:13:23.943 回答