【问题标题】:Embedded fonts in flash with the same fontName property具有相同 fontName 属性的 Flash 中嵌入的字体
【发布时间】:2010-10-24 00:06:12
【问题描述】:

我正在使用包含许多字体类的外部 swf 在运行时为我的 flash 站点加载和注册字体。 (在库面板Flash IDE中导出,然后在框架脚本中注册)

在这种特殊情况下,swf 包含许多同一家族的不同权重。例如。罗马字体、斜体字体、轻字体、重字体等...

字体似乎注册得很好,但是当我尝试使用这些字体时,这些字体的一些 fontName 属性是相同的。三个显示为 Roman,两个显示为 light,一个显示为 light sc...所以我去寻找一些愚蠢的编码错误,但令我沮丧的是,我没有找到任何错误。正确的字体对象以正确的顺序加载。

经过大量测试后,我检查了我的字体文件夹 (vista)。当我打开 Heavy 的文件时,字体查看器中的标题显示 Roman;字体查看器中的标题与我在 Flash 中获得的标题相匹配。这种行为似乎是该字体所独有的。

由于 fontName 是我知道如何将字体分配给 TextField 的唯一方法,我不知道如何将这种可爱的重字体用于我的动态标题!

这是一种类型 1 字体

任何人都可以提出原因、解决方案或解决方法吗?

【问题讨论】:

    标签: flash actionscript-3 fonts embedding


    【解决方案1】:

    谢谢,我认为你是对的。

    不过,我确实找到了一种嵌入字体和设置名称的方法。

    首先我使用 CrossFont 将 Type 1 postscript 字体转换为 .otf

    使用 cs4 中现在可用的 [embed()] 功能,我能够使用 fontFamily 属性来设置嵌入字体的 fontName 属性。

    在下面的代码中,您可以看到我将名称设置为“BlaaDeeBlaa”,TextFormat 将接受它并显示嵌入的字体。

    [Embed(source="assets/FontFileName.otf",
                                fontFamily="BlaaDeeBlaa",
                                mimeType="application/x-font")]
    var BlaaDeeBlaa:Class;
    
    var CH:Font = new BlaaDeeBlaa();
    
    var testTxt:TextField =  new TextField();
    testTxt.defaultTextFormat = new TextFormat("BlaaDeeBlaa",28,0x000000,true);
    testTxt.embedFonts = true;
    testTxt.text = Font.enumerateFonts(false)[0].fontName;
    testTxt.autoSize = "left";
    addChild(testTxt);
    

    n.b.使用此方法只能嵌入 OpenType(.OTF) 和 Truetype (.TTF)

    Lee Brimelows' tutorial at gotoandlearn 让我学习这项技术

    【讨论】:

      【解决方案2】:

      听起来这是字体的问题,而不是您的软件(Flash)的问题。

      如果它是免费字体,则字体系列的作者很可能使用一种字体作为基础,并针对不同的面部风格编辑了它的副本。他们可能只是更改了文件名,而忘记更改内部名称。

      您也许可以自己编辑名称,但我对此不太确定。

      【讨论】:

        猜你喜欢
        • 2012-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-12
        相关资源
        最近更新 更多