if (vector[glyphIndex].getWidth() == 0){
AffineTransform fontTransform = this.transform;
double xOffs = x + visualPositions[idx] + fontTransform.getTranslateX();
double yOffs = y + visualPositions[idx+1] + fontTransform.getTranslateY();
return new Rectangle((int)xOffs, (int)yOffs, 0, 0);
}
GeneralPath shape = (GeneralPath)this.getGlyphOutline(glyphIndex);
AffineTransform at = AffineTransform.getTranslateInstance(x, y);
if (frc != null){
at.concatenate(frc.getTransform());
/* if (frc.usesFractionalMetrics()){
shape.transform(at);
Rectangle2D bounds = shape.getBounds2D();
Rectangle rect = new Rectangle();
rect.setRect(bounds);
return rect;
}*/
}
shape.transform(at);
Rectangle bounds = shape.getBounds();
return new Rectangle((int)bounds.getX(), (int)bounds.getY(),
(int)bounds.getWidth()-1, (int)bounds.getHeight()-1);
}