PDA

Просмотр полной версии : getTextExtent().textFieldWidth при внедренном шрифте


chingachgoog
06.02.2008, 14:26
Итак, имеется некое динамическое текстовое поле tf:


slovo="абждшмиклно"

myForm=new TextFormat()
myForm.font="Arial Cyr"
myForm.size=16

trace(myForm.getTextExtent(slovo).textFieldWidth)

tf.autoSize=true
tf.text=slovo

setTimeout(function(){
trace(tf._width)
}, 50)


И вот что забавно: в том случае если шрифт (Arial Cyr) не внедрен в текстовое поле (речь не о программном, а о фактическом внедрении ручками), то выводимые значения расчетной и фактической длины текстового поля равны, но стоит лишь внедрить шрифт, как сразу начинается расхождение, порой сильное. :(

iNils
06.02.2008, 15:44
Об этом уже не раз говорили. getTextExtent страшный врун, я бы посоветовал его избегать.

chingachgoog
06.02.2008, 15:55
Пока нашел эмпирический поправочный коэффициент, но еще не проверял как он постоянен от объема текста и размера шрифта.

А вообще странно. Такое ощущение, что getTextExtent просматривает системный фонт, а не внедренный. Что же он будет просматривать если в системе вообще не будет данного фонта? Страшно подумать - неужели девайс-фонт???

iNils
06.02.2008, 16:25
Не поможет. Он зависит от размера текста, шрифта, символа.