actionscript-3 - 检查字体是否嵌入?

标签 actionscript-3 flash fonts embed

我可以在创建 TextFormat 时检查我是否使用实际字体吗?/TextField ?如果我指定未嵌入的字体或使用任何随机字符串,则不会显示任何文本,我不知道为什么。

import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;

public class SimpleSprite extends Sprite
{
    //[Embed(source="C:/Windows/Fonts/Arial.ttf",fontName="default_font",mimeType="application/x-font",fontWeight="normal",fontStyle="normal",advancedAntiAliasing="true",embedAsCFF="false")]
    //private static var defaultFont: String;

    public function SimpleSprite()
    {
        var t: TextField = new TextField;
        t.autoSize = TextFieldAutoSize.LEFT;
        t.defaultTextFormat = new TextFormat("default_font", 16, 0xff0000);
        t.embedFonts = true;
        t.text = "hello world";
        addChild(t);
    }
}

当嵌入线丢失时,它不会显示任何文本。

重要提示:我创建 TextFields 的包没有嵌入任何内容,我希望保持这种状态。嵌入必须由使用该包的程序员完成。我想检查字体是否嵌入,如果没有嵌入则抛出错误。

最佳答案

您可以使用Font.enumerateFonts它将返回可用嵌入字体的数组。您可以使用它来创建如下所示的函数:

private function hasEmbeddedFont(fontName:String):Boolean
{
    var fonts:Array = Font.enumerateFonts();
    for each(var font:Font in fonts)
    {
        if (font.fontName == fontName)
        {
            return true;
        }
    }

    return false;
}

然后像这样使用它:

t.autoSize = TextFieldAutoSize.LEFT;
t.defaultTextFormat = new TextFormat("default_font", 16, 0xff0000);
t.embedFonts = hasEmbeddedFont("default_font");
t.text = "hello world";

如果您正在构建供其他人使用的库,您可能会考虑将其抽象到您自己的 TextField 的自定义子类中,以便所有操作都会自动处理。

关于actionscript-3 - 检查字体是否嵌入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24302767/

相关文章:

actionscript-3 - 如何在 Flash AS3 中解析日期

html - 退出全屏模式后 Flash 会恢复正常大小吗?

flash - 服务器端 ActionScript 3.0

javascript - 单击时更改字体

Java Swing 将字体信息吐出到标准输出

ios - Starling AS3 : A lot of textures, 内存警告 iOS

actionscript-3 - diff if 语句

javascript - HTML 页面上的内容按什么顺序加载和执行?

c++ - 在网络浏览器中运行 C/C++ 代码?

java - Netbeans 转发 X11 字体问题