【发布时间】:2012-10-03 16:08:39
【问题描述】:
我正在使用 Flash CS5.5 并且想要指定设备字体,而不是嵌入。
问题在于,虽然我知道设备上字体的准确名称,但我无法将字体名称输入到 Flash 创作环境中。我所拥有的只是创作机器中安装的字体的下拉列表。从选中的下拉列表中选择具有相似字体名称的“使用设备字体”会导致影片在设备上默认为 _sans。
我不希望开始使用 AS3 指定文本框和分配字体。
提前致谢。
【问题讨论】:
我正在使用 Flash CS5.5 并且想要指定设备字体,而不是嵌入。
问题在于,虽然我知道设备上字体的准确名称,但我无法将字体名称输入到 Flash 创作环境中。我所拥有的只是创作机器中安装的字体的下拉列表。从选中的下拉列表中选择具有相似字体名称的“使用设备字体”会导致影片在设备上默认为 _sans。
我不希望开始使用 AS3 指定文本框和分配字体。
提前致谢。
【问题讨论】:
据我所知,没有任何方法可以做到这一点 - 我看到很多人都在哀叹没有这个功能!
您能做的最好/唯一的事情是使用嵌入设置来仅嵌入您需要的字符(如果无法解决这个问题,“基本拉丁语”在 99% 的情况下都可以 - 抱歉,如果我是在这里教你吸蛋),并限制你使用的字体数量,从设计的角度来看,这可能也是一个好主意。
关于您的最后一句话,您只需嵌入一次字体 - 每个具有该字体的文本框都可以引用它。
抱歉,我无法提供更多帮助,但我认为您想要做的事情无法完成。
PS 作为替代方案,您可以将字体嵌入到单独的 swf 文件中并从中动态加载它们,这样您就不必在主文件中使用不需要的字体:
【讨论】:
AFAIK 这只能用 AS3 完成。我知道你说过你不想使用 AS3,但这很简单。代码如下:
要知道字体的确切名称,请使用此
var f:Font;
var fonts:Array = Font.enumerateFonts(true);
for(var i:int = 0; i < fonts.length; i++) {
f = fonts[i];
trace(f.fontName + "," + f.fontStyle + "," + f.fontType);
}
要首先使用字体,您可以通过这种方式创建一个 TextFormat 对象
var myFormat:TextFormat = new TextFormat();
myFormat.font = "Helvetica"; //use your own font here
然后您可以将此格式应用于任何文本字段,由 AS3 创建或在 Flash IDE 中手动创建。
myTextfield.setTextFormat(myFormat);
如果您的 TextFormat 可以全局访问,例如使用单例模式,那么您将能够在代码中的任何位置使用它。但那是另一回事了……
【讨论】: