swfs中的AS3嵌入字体加载到应用程序沙箱中 - 奇怪的行为

时间:2016-01-31 13:53:49

标签: actionscript-3 flash fonts air

我在AS3,Air App中看到一些非常神秘的字体行为,使用Flash版本11.5,在Flash Pro CC 2014中编译我的fla文件。

上下文: Air应用程序,shell在运行时将swfs加载到应用程序域中(因此它们就像它们是主应用程序的一部分一样运行,而不是作为沙箱中的孩子们。)

问题:某些加载的swfs中包含嵌入字体的动态文本字段未显示,而其他文件字段则没有显示。

详细信息:

  • 这是一个新问题 - 几周前很好的字体现在行为不端。 (相同的计算机,相同的操作系统和Flash版本)

  • 某些'模块中缺少相同的字体。 (swfs)存在于其他人中。

  • 来自同一家庭的一些字体到处工作(Myriad Pro Semibold),其他字体在某些地方缺失,但在其他地方存在(Myriad Pro Regular)

  • 所有TextField都在movieclips中,然后在编译时使用

  • 将其拉入swfs

[Embed(source="someFla.swf", symbol="libraryExportName")]

  • Air' shell'包含并成功使用Myriad Pro Semi,Myriad Pro Regular和Arial。 (仅)
  • 某些字体在测试期间在本地显示正常,但一旦安装了Air应用程序就会消失(Myriad Pro Regular)
  • 其他字体一直是垃圾 - 例如Helvetica Neue,在测试和安装后的多个地方消失了
  • 所有字体都根据需要嵌入到单个swfs(Basic Latin集)中,但不会为actionscript导出,因为字体是在编译时而不是在运行时设置的。

如果有人有任何见解或建议会很棒。我的预感是,嵌入到多个swfs中的字体在某种程度上会发生冲突,但我无法解开为什么我会遇到一些冲突而其他人很好。我已经在flash中使用了多年的字体嵌入,我已经尝试了一切我能想到的东西来克服常见的陷阱。

1 个答案:

答案 0 :(得分:0)

如果你编译到多个平台(iOS,Android,Air,EXE,Flash),嵌入字体总会导致一些问题,并且只有一个解决方案可行(至少,我们没有遇到任何问题,因为我们搬到了这个解决方案):

  1. 在项目中包含一个TextField,每个特定的非系统字体使用1个字体(fontAwesome,WebDings等;我们倾向于称它们为_webdings_awesome,等)

  2. 在设计时将您正在使用的所有特定字符复制到该文本字段

  3. 启动时隐藏文本字段(_webdings.visible = _awesome.visible = false

  4. 忽略所有“你必须包含” - 消息,因为你正在使用的字符将在编译时自动包含在你的swf中...