我不知道你的情況,但是我很難將自己的頭腦置於TLF中。在TLFTextField中使用嵌入字體
我正在使用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字體。顯然,問題不在於嵌入,而在於我分配字體的方式 - 這意味着這可能不像我原先想象的那麼複雜。
Scratch that,Arial在將embedFonts更改爲false後工作。所以問題是畢竟嵌入。
我看到一個問題,在外部加載的SWF中,文本字段顯示Times New Roman,直到我單擊該字段,然後它創建了分配給它的Arial嵌入字體。這就像是該領域沒有完全正確初始化。如果它是隻讀的,那麼單擊它不會執行任何操作,並且它保持爲Times New Roman(儘管在設計器中設置爲Arial)。整個TLF是垃圾。 – Triynko 2013-06-04 17:39:15
此外,除非明確選擇「爲ActionScript導出」,否則不能選擇DF3或DF4,這與嵌入字體不同。如果您只是嵌入字體,並且您使用的都是經典和TLF TextField,例如「Arial Bold」,那麼嵌入了哪種字符數據?都? Flash是否確保使用Arial Bold的兩個字段都爲每個字段嵌入了正確的字符數據? – Triynko 2013-06-04 19:21:06