我有一个项目使用 flash(以及 AIR for android 和最终的 iOS)来翻译一些短语。虽然大多数字体都很好,但在用户选择语言后我必须加载一些字体。一年多以前,我生成了几个 swf 文件(孟加拉语和乌尔都语)并将它们放在我的 Web 服务器上。然后 Flash 应用程序在需要时加载它们,一切正常......但是,当我即将实施该项目时,我认为我应该为管道中的其他语言生成 swf 文件,但由于某种原因我无法管理它!不用说,我已经为我所做的两种字体放错了(整理)原始 AS3 源代码。
package
{
import flash.display.Sprite;
import flash.events.Event;
public class ArabicF extends Sprite
{
[Embed(source = "trado.ttf",
fontName = "ArabicX",
fontFamily = "ArabicY",
fontWeight = "normal",
fontStyle = "normal",
mimeType = "application/x-font",
advancedAntiAliasing="true",
embedAsCFF="true")]
public static const ArabicZ:Class;
}
}
这已经从一个更简单的形式扩展,因为我添加了一些东西来让它工作,我必须尝试所有真假排列。我加载 swf 正常,但无法提取类。我在 swf 类和参数之前嵌入的两种字体都具有相同的名称并且它们工作正常(即 Urdu.swf 然后稍后: var FontClass:Class = evt.target.applicationDomain.getDefinition("Urdu") as Class;然后 Font.registerFont(FontClass.Urdu);
在使用上述 Arabic.swf 调用 .as 应用程序中我尝试
trace("1 Arabic "+evt.target.applicationDomain.hasDefinition("ArabicF"));
trace("2 Arabic "+evt.target.applicationDomain.hasDefinition("Arabic"));
trace("3 ArabicX "+evt.target.applicationDomain.hasDefinition("ArabicX"));
trace("4 ArabicY "+evt.target.applicationDomain.hasDefinition("ArabicY"));
trace("5 ArabicZ "+evt.target.applicationDomain.hasDefinition("ArabicZ"));
但都返回假
PS还尝试使用fontswf.bat生成Arabic.swf,这似乎再次生成了一个非常相似的swf文件,但我无法从中提取类
PPS 我使用的是 flashdevelop,字体 swf 设置为 AS3 标准项目编译器选项。