private Shape generateShapeFromText() { Font font = new Font(fontFamily, Font.PLAIN, fontSize); BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = img.createGraphics(); try { GlyphVector vect = font.createGlyphVector(g2.getFontRenderContext(), str); float dispX = x; float dispY = (float) (y - vect.getVisualBounds().getY()); Shape shape = vect.getOutline(dispX, dispY); return shape; } finally { g2.dispose(); } }