我已经看到很多与flash中的字体嵌入有关的问题,我似乎无法找到问题的答案。
我从字体swf加载字体并将它们注册到高级别,以便它们可以在子swf中使用。问题是子swf也可能嵌入这些字体,但不是明确的,这意味着它们只是嵌入,因为子swf中有使用字体的某些字符的字段。这意味着子项中的文本字段使用不完整的嵌入字体,而不是在父项或任何级别的祖父项中注册的嵌入式完整集。这也意味着可能成为这个孩子的孩子的swfs将无法获得完整的字体。
我的问题: 有没有办法告诉flash在编译时没有嵌入,在任何情况下,字体都变成了swf?如果没有,是否有工具从已编译的swf中删除嵌入字体?
到目前为止,我已经考虑过/注意到的一些事情:
我已经开始在脑海中形成一个可能不正确的问题的定义,所以请在必要时退一步,给我一个关于问题的不同观点。到目前为止,我上面提到的问题似乎是正确的问题,如果有解决方案,我的所有问题都会消失。
谢谢!
答案 0 :(得分:0)
如果我理解正确,那么你想删除/取消注册那些不完整的字体作为已经加载但嵌入另一个swf的特定字体的版本?
嵌入的每个Font都会创建一个类,通过Loader类加载的每个swf默认都会加载到自己的应用程序域中,以防止命名空间冲突,但是您可以强制加载器将所有内容加载到当前应用程序域中Loader的load()方法的»loader 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项目文件可能会有所帮助,但即使引用的Font-File也可以有不同的名称。
一个不错的问题,祝你好运
答案 1 :(得分:0)
使用带flash的字体时遇到了很多问题。在html上仍然存在问题,不同的浏览器以不同的方式呈现。
无论如何,对于flash,我构建了这个工具包,对我有很大帮助。检查如何自定义字体。如果您执行这些步骤,我很确定问题将得到解决。
https://github.com/tbwa/AS3-Toolkit/tree/master/src/com/utils/text
答案 2 :(得分:0)
原来这是我的Flash Professional版本的一个错误。我做了更新,现在可以使用运行时共享字体。我可能会将共享字体指向字体的错误URL,然后字体将来自父应用程序域,因为它们不会编译到子swfs中。我现在正在使用Flash Professional CS5.5 11.5.1。我使用的是CS5.5 11.5.0。
http://forums.adobe.com/message/3926344
感谢Adobe浪费我的时间。