2011-10-31 66 views
5

我想弄清楚爲什麼有些字母(如挪威A(Å))在頂部中間的板缺了「O」:AS3文本字段設置文本的頂邊距,因爲一些字符的板缺了

我的代碼是這樣的:

 var titleFormat:TextFormat = new TextFormat(); 
     titleFormat.size = textSize; 
      // this is embedded font, and exported for action script, declared 
     titleFormat.font = myFontBold.fontName; 
     titleFormat.bold = true; 
     titleFormat.color = parseInt("0x"+fontColor,16); 

     var titleText:TextField = new TextField(); 
     titleText.defaultTextFormat = titleFormat; 
     titleText.embedFonts = true;    
     titleText.antiAliasType = AntiAliasType.ADVANCED; 
     titleText.text = "Å"+text; 
     addChild(titleText); 

     titleText.selectable = false;   
     titleText.wordWrap = true;   
     titleText.width = maskImg.width - 80;   
      // this should autosize to fit all text, but it doesn't the top of text 
     titleText.autoSize = TextFieldAutoSize.LEFT; 
     titleText.x = x; 
     titleText.y = y; 

所以,我已經嘗試,如設置高度硬編碼並大於文本不同的東西,但美國頂級板缺一次,我曾嘗試用CSS,但沒有成功。任何人有想法,爲什麼這封信沒有完全表現爲什麼,如果我在SWF(2-3變焦INS)放大它顯示了正常的(也是我努力實現)這樣的:

我認爲它與topMargin有關,但不幸的是我在as3文檔中沒有找到類似的東西。

+0

在Flex樣式中有'paddingTop',但是您有純TextField。這可以是文字測量的錯誤 - 字母開箱即用。你可能會嘗試渲染文本到位圖並顯示位圖(它也可以被剪切,但也許有矩陣縮放/字體大小組合來避免它)。 – alxx

+0

是的,我也嘗試過,但正如你所說的那樣,它也被緩存了沒有頂部的位圖。我認爲這可能是一個需要在未來的Flash版本中修復的bug,或者添加一個新的邊距(現在只剩下leftMargin和rightMargin,可能需要topMargin和bottomMargin,這樣我們才能通過設置文字更多裏面) – Daniel

回答

1

不知道這是否有幫助,但我測試了以下完整的自帶代碼與Verdana字體,沒有嵌入,它工作正常。也許你正在嵌入的字體本身就有問題,或者出於某種原因嵌入引起了問題?

package { 

    import flash.display.MovieClip; 
    import flash.text.*; 

    public class TestText extends MovieClip { 

     public function TestText() { 

      var textSize = 20; 

      var titleFormat:TextFormat = new TextFormat(); 
      titleFormat.size = textSize; 
      titleFormat.font = "Verdana"; 
      titleFormat.color = 0xFF0000; 

      var titleText:TextField = new TextField(); 
      titleText.defaultTextFormat = titleFormat;   
      titleText.text = "Åbcdefg"; 
      titleText.backgroundColor = 0x000000; 
      titleText.background = true; 
      addChild(titleText); 

      titleText.autoSize = TextFieldAutoSize.LEFT; 
      titleText.selectable = false;   
      titleText.wordWrap = true;   
      titleText.width = 200;  

     } 
    } 
} 
+0

改變它爲Verdana工作,所以它可能是你建議的字體。但之後,我注意到當不使用嵌入時,「o」在該字體上根本不可見,並嵌入它將其顯示爲一半(參見第一幅圖像)。 所以,我認爲這是字體的原因,但閃光燈應該有辦法處理這些種類的字體,或至少有一種方法來解決它與topMargin和bottomMargin。 – Daniel