Каждый символ шрифта имеет виртуальную кегельную площадку, он не висит в пустоте, имея только визуальные размеры, а имеет как бы прямоугольник "фона". У всех шрифтов положение каждого символа в этом контейнере (апроши, т.е. отступы от границ контейнера до контура глифа) – индивидуально, как и ширина контейнера. Поэтому в зависимости от размера шрифта Вам кажется, что отступы в ТекстФилде изменяются, но это не так – они ровно по 2 пикселя с каждой стороны (вопрос эстетики, у поля может быть собственная обводка и символы не должны её касаться, нужен хотя бы минимальный отступ). Но вот внутренний "визуальный" отступ самого текста меняется при изменении размера шрифта, так как меняется пиксельная величина апрошей, и хотя площадка первого символа остается в координатах (2, 2), контур этого символа внутри площадки будет тем дальше от верхнего левого угла, чем больше размер (скейл) шрифта.
Точный размер видимого текста можно узнать только с помощью битмапдаты (сделать снимок методом draw() и получить Rectangle текста методом getColorBoundsRect() ).
Размер с апрошами, т.е. размер площадок (он будет чуть больше видимого) – через свойства TextField'a – textWidth и textHeight.
То есть, чтобы, например, сделать поле такого минимального размера, чтобы оно четко вмещало текст и не обрезало символы, можно написать такой код
Код AS3:
_txt.width = _txt.textWidth + 4;
_txt.height = _txt.textHeight + 4;
Но это никогда не будет выглядеть идеально – отступы в текстфилде будут обязательно.
|