嵌入字体在flash中具有相同的fontName属性
-
05-07-2019 - |
题
我正在使用包含许多字体类的外部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的作者使用一种字体作为基础,并为不同的面部样式编辑它的副本。他们可能刚刚更改了文件名,忘了更改内部名称。
您可能会以某种方式自己编辑名称,但我对此并不太确定。