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

在这种特殊情况下,swf包含同一系列的许多不同权重。例如。 font roman,font italic,font light,font heavy等...

字体看起来很好,但是当我尝试使用这些字体时,这些字体的某些fontName属性是相同的。三个显示为罗马,两个显示为光,一个显示为轻...所以我去搜索一些愚蠢的编码错误,但令我沮丧的是我没有发现任何错误。正确的字体对象按正确的顺序加载。

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

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

这是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'gotoandlearn教程了解了这项技术

其他提示

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

如果它是一个免费字体,很可能font-family的作者使用一种字体作为基础,并为不同的面部样式编辑它的副本。他们可能刚刚更改了文件名,忘了更改内部名称。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top