我已将 Arial 作为嵌入字体添加到我的字体格式中,我已将其添加到许多文本字段中,这些文本字段必须彼此准确对齐以创建空间外观。它们彼此对齐大约 1 - 2 个像素。问题是在正常的舞台尺寸下查看时它们的间距看起来不准确,但是当我放大文本时看起来很好。
我试过搞乱并添加高级抗锯齿,但没有任何效果。也许 Arial 不适用于小尺寸?我知道不设置字体会产生我想要的结果,但这不是我想要使用的字体;它必须使用时代?
有任何想法吗?
var myFont = new Font1();
format1 = new TextFormat();
format1.color = 0x000000;
format1.size = 16;
format1.font = myFont.fontName;
编辑:本质上,我将每个字符拆分为自己的文本字段,因此我可以操纵每个字符并为其设置动画。但要做到这一点,我需要将字符隔开,就好像它是一个文本字段一样。
private var bmd:BitmapData; // bitmapdata to draw textField in;
private function getExactMetrics(textField:TextField):Object
{
// copy textField to bitmap
bmd = new BitmapData(textField.width,textField.height,true,0x000000);
bmd.draw(textField);
// loop through pixels of bitmap data and store the x location of pixels found.
var foundx:Array = [];
for (var nx:int = 0; nx < bmd.width;nx++)
{
for (var ny:int = 0; ny < bmd.height; ny++)
{
var px:uint = bmd.getPixel32(nx, ny);
if (px != 0)
{
foundx.push(nx);
break;
}
}
}
// get the values for the metrics
var startX:int = foundx[0]; // first pixel found representing the x start of the text in pixels
var endX:int = foundx[foundx.length-1]; t
var realWidth:Number = endX - startX;
// clear the array with found x positions
foundx = [];
// wrap values in object
var metrics:Object = { };
metrics.width = realWidth;
metrics.x = startX;
// clear bitmapdata
bmd = null;
return metrics; // retrurn metric object;
}
}