1

我不了解你,但我很难理解 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。所以显然问题不在于嵌入,而在于我分配字体的方式——这意味着这可能没有我最初想象的那么复杂。从头开始,Arial 在我将 embedFonts 更改为 false 后工作。所以问题毕竟是嵌入。

4

2 回答 2

3

对,我知道现在问题出在哪里。我留下这个是为了警告那些对 TLF 非常困惑的人(我想很多人)。

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

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

安德烈

于 2011-05-24T10:35:21.193 回答
2

万一其他人对 DF3 和 DF4 有问题……您可以同时嵌入两者,

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

它使文件大小加倍,因为您嵌入了两次字体,但它就像一个魅力。

这也适用于 Flex。

于 2011-06-30T02:12:10.433 回答