Мне нужно отобразить сглаженные системные шрифты (поскольку размер файла swf должен быть небольшим, поэтому я не могу встраивать шрифты). Поэтому я написал этот скрипт для того, чтобы вручную сглаживать текст
Код:
public function renderTextField():BitmapData{
var w:int = this["mainTextField"].textWidth+10;
var h:int = this["mainTextField"].textHeight+10;
var bitmapData:BitmapData = new BitmapData(w*3,h*3,false,0x000000);
var antialiased:BitmapData = new BitmapData(w,h,false,0x000000);
var transf:Matrix = new Matrix();
transf.scale(3,3);
bitmapData.draw(this["mainTextField"],transf);
var bitmap:Bitmap = new Bitmap(bitmapData,"auto",true);
transf = new Matrix();
transf.scale(1.0/3.0,1.0/3.0);
antialiased.draw(bitmap,transf,null,null,null,true);
return antialiased;
}
это работает довольно хорошо, но есть неприятная вещь. Иногда масштабирование вызова отрисовки влияет на форматирование текста. например, последнее слово строки будет первым словом следующей строки. Этого не должно быть! у кого-нибудь есть идея, почему это происходит и как я могу избежать этого? я хочу, чтобы текст отображался в bitmapData в точности так, как он отображается в текстовом поле
спасибо!