2011-05-23 44 views
1

我不知道你的情況,但是我很難將自己的頭腦置於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後工作。所以問題畢竟嵌入。

回答

3

對,我確切地知道現在的問題是什麼。我要離開這裏,作爲TLF(我想象中的很多人)非常困惑的其他人的警告。

問題出在TLF和經典文本使用的大綱格式之間的兼容性問題。顯然,TLF只能與DF4一起工作,而經典文本只能與DF3一起工作。您可以從「嵌入」對話框的Actionscript選項卡(Flash CS5,不確定CS4)更改這些設置。

我不確定是否有解決方法 - 我一定會尋找一個,因爲此刻我需要同時使用DF3和連字 - 但我認爲這足以回答以幫助任何未來在這個問題上遇到困難的人。

安德烈

+0

我看到一個問題,在外部加載的SWF中,文本字段顯示Times New Roman,直到我單擊該字段,然後它創建了分配給它的Arial嵌入字體。這就像是該領域沒有完全正確初始化。如果它是隻讀的,那麼單擊它不會執行任何操作,並且它保持爲Times New Roman(儘管在設計器中設置爲Arial)。整個TLF是垃圾。 – Triynko 2013-06-04 17:39:15

+0

此外,除非明確選擇「爲ActionScript導出」,否則不能選擇DF3或DF4,這與嵌入字體不同。如果您只是嵌入字體,並且您使用的都是經典和TLF TextField,例如「Arial Bold」,那麼嵌入了哪種字符數據?都? Flash是否確保使用Arial Bold的兩個字段都爲每個字段嵌入了正確的字符數據? – Triynko 2013-06-04 19:21:06

2

的情況下,任何其他人與DF3和DF4問題......你可以一次同時嵌入,

例如「黑體」與DF4和「黑體」與DF3(重要部分是它們可以使用相同的名稱)...然後您可以使用字體「Helvetica」與舊的文本字段和較新的TLF文本字段。

它將文件大小加倍,因爲您將字體嵌入了兩次,但是像魅力一樣。

這也適用於Flex。