/**
* Returns a tight bounds on the GylphVector including stroking.
*/
public Rectangle2D getBounds2D(AttributedCharacterIterator aci) {
aci.first();
TextPaintInfo tpi = (TextPaintInfo)aci.getAttribute(PAINT_INFO);
if ((bounds2D != null) &&
TextPaintInfo.equivilent(tpi, cacheTPI))
return bounds2D;
if (tpi == null)
return null;
if (!tpi.visible)
return null;
cacheTPI = new TextPaintInfo(tpi);
Shape outline = null;
if (tpi.fillPaint != null) {
outline = getOutline();
bounds2D = outline.getBounds2D();
}