AS3 TextField устанавливает верхнее поле текста, потому что некоторые символы вырезаны - PullRequest
5 голосов
/ 31 октября 2011

Я пытаюсь выяснить, почему некоторые буквы (например, норвежский Å (& Aring;)) вырезаны в середине верхней буквы "o":

image

Мой код такой:

        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 увеличения), он отображается нормально (и что я пытаюсь достичь), как это:

image

Я думаю, что это связано с topMargin, но, к сожалению, я не нашел ничего подобного в документации as3.

1 Ответ

1 голос
/ 04 ноября 2011

Не уверен, поможет ли это, но я протестировал следующий полный автономный код со шрифтом 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;    

        }
    }
}
...