2011-10-31 24 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