使用嵌入字体和TLFTextField

时间:2011-05-23 11:22:37

标签: flash fonts embedding flash-cs5 tlf

我不了解你,但我很难在TLF周围探索。

我正在使用Flash CS5。我有一个从外部SWF加载的嵌入字体。据我所知,它已经正确嵌入 - 它在我从经典TextField切换之前曾经工作过 - 但我需要切换,因为我需要高级连线支持。我的代码是:

//setting up...
var text:TFLTextField = new TLFTextField();
text.width = 530;
text.height = 330;
text.type = TextFieldType.INPUT;
text.text = "Enter your own text here";
text.embedFonts = true;
addChild(text);

var format:TextLayoutFormat = new TextLayoutFormat();
format.fontSize = currentSize;
format.ligatureLevel = LigatureLevel.EXOTIC;

textFlow = text.textFlow;
textFlow.hostFormat = format;
textFlow.flowComposer.updateAllControllers();

//... later on, when the font is loaded:

private function fontLoadedHandler(e:Event):void {
var a:Array = Font.enumerateFonts();

for (var i:Number = 0; i < a.length; i++) {
trace(a[i]); //font name shows up just fine in the list...
}

var format:TextLayoutFormat = new TextLayoutFormat();
format.fontFamily = e.currentTarget.fontName;
format.fontLookup = FontLookup.EMBEDDED_CFF;
format.fontSize = currentSize;

textFlow.invalidateAllFormats();
textFlow.hostFormat = format;           

textFlow.flowComposer.updateAllControllers();
}

编译时,默认为Times New Roman。我已经完成了一定数量的谷歌搜索,发现了这个:http://forums.adobe.com/message/3477909

这家伙似乎有类似的问题,但我已经尝试了他的解决方案并得到了同样的负面结果。

任何帮助或链接或任何内容将不胜感激!

谢谢, 安德烈

编辑: 只是尝试将字体切换为Arial,然后再次回到Times New Roman。显然问题不在于嵌入,而在于我分配字体的方式 - 这意味着这可能没有我原先想象的那么复杂。在我将embedFonts更改为false之后,Arial工作了。所以问题毕竟是嵌入。

2 个答案:

答案 0 :(得分:3)

是的,我确切地知道现在的问题是什么。我要离开这个,以此作为对TLF(我想象的很多人)非常困惑的其他人的警告。

问题源于TLF和Classic Text使用的大纲格式之间的兼容性问题。显然,TLF仅适用于DF4,而Classic Text仅适用于DF3。您可以在“操作”选项卡下的“嵌入”对话框中更改这些设置(Flash CS5,不确定CS4)。

我不确定是否有解决方法 - 我肯定会寻找一个,因为目前我需要使用DF3和连字 - 但我认为这足以解决帮助将来偶然发现这个问题的其他人。

安德烈

答案 1 :(得分:2)

如果其他任何人遇到DF3和DF4问题......您可以同时嵌入两者,

例如DF24的“Helvetica”和DF3的“Helvetica”(重要的部分是它们都可以使用相同的名称)...然后你可以使用旧文本字段和较新的TLF字体“Helvetica”文本框。

它将文件大小加倍,因为你将字体嵌入两次,但就像魅力一样。

这也适用于Flex。