actionscript-3 - 为什么我不能在 AS3 中显示嵌入字体?

标签 actionscript-3 flash fonts flashdevelop

我已经浏览了我能找到的关于在 AS3 中嵌入字体的所有主题,并尝试了所有解决方案。我可能遗漏了一些明显的东西,但我不完全明白我在做什么,所以请指导我朝着正确的方向前进。许多答案涉及 Flash Builder 或其他工具,但我使用 FlashDevelop .不知道这是否重要。

我的 Main.as 中有这一行:

[Embed(source = "assets/SKA_75_marul_CE_extended.ttf", 
fontName = "SKA_75_marul_CE_extended", 
fontWeight = "bold", 
advancedAntiAliasing = "true", 
mimeType = "application/x-font")] 
public static var SKA_75_marul_CE_extended:String;

这存在于名为 Pointer.as 的扩展 Sprite 的构造函数中:
var format:TextFormat = new TextFormat();
format.font = "SKA_75_marul_CE_extended";
format.color = 0xFFCCCC;
format.size = 20;           

var label:TextField = new TextField();
label.defaultTextFormat = format;
label.text = "test";
label.embedFonts = true;
label.antiAliasType = AntiAliasType.ADVANCED;

//label.setTextFormat(format);    --> I tried this too, didn't work...
label.defaultTextFormat = format;
label.x += img.width + 50;
this.addChild(label);

我发现让它显示任何内容的唯一方法是关闭 embedFonts。我试过嵌入 C:/windows/fonts/arial.ttf 没有成功。

似乎嵌入字体是一种与众不同的黑暗艺术,经过 1 小时的努力,我必须承认。请发送帮助。

更新:

这是工作代码,事实证明这是由于操作顺序正确......:
[Embed(source="assets/SKA_75_marul_CE_extended.ttf", 
                fontName = "myFont", 
                mimeType = "application/x-font", 
                fontWeight="normal", 
                fontStyle="normal", 
                unicodeRange="U+0020-U+007E", 
                advancedAntiAliasing="true", 
                embedAsCFF="false")]
        private var myEmbeddedFont:Class;

            var tf:TextFormat = new TextFormat( "myFont", 20,0xffffff );

            var t:TextField     = new TextField;
            t.embedFonts        = true; // very important to set
            t.defaultTextFormat = tf;
            t.text              = text;
            t.x += img.width + 50;
            t.width = 700;
            this.addChild( t );

最佳答案

让嵌入的字体正常工作是最绝对的“黑暗艺术”。我会首先检查“SKA_75_marul_CE_extended”是否是字体在其元数据中的实际名称(我使用手提箱融合来提取名称)。我还看到过 Flash 拒绝嵌入的 TTF 字体(也许无效的元数据会导致嵌入系统出错)。我将继续使用已知的工作字体进行测试,直到您找到实际问题,以防它是字体文件问题。

我注意到的一件事是“public static var SKA_75_marul_CE_extended:String;”...这不应该是Class类型吗?

FlashDevelop 字体嵌入引用来自有问题的人:
http://www.flashdevelop.org/community/viewtopic.php?p=28301

关于actionscript-3 - 为什么我不能在 AS3 中显示嵌入字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10098254/

相关文章:

c++ - 通过 FlasCC 在 AS3 中使用解压库

html - Flash 对象后不需要的垂直空间

java - Adobe Actionscript (Flex Framework) 的蓝牙 SPP 怎么样?

Flash 安全设置面板 - 监听关闭事件?

css - 将后备字体添加到@ font-face定义

macos - Delphi - OSX - 从内存流加载字体

html - 嵌入在 aspx 文件中的 @font-face 不起作用

xml - E4X 选择后代可以是 A OR B 或 A && B 的节点

c# - 使用 .NET 在服务器端生成 Flash 对象

Java 正则表达式 : Replace all xml characters with their entity number