1

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

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

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

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

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

这是一种类型 1 字体

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

4

2 回答 2

3

谢谢,我认为你的权利。

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

首先,我使用 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);

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

在 gotoandlearn 的 Lee Brimelows 的教程中学习了这项技术

于 2009-05-06T23:51:39.177 回答
0

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

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

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

于 2009-05-06T22:12:21.367 回答