Generate Shape From Text : Draw Text « 2D Graphics « Java Tutorial

import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.font.GlyphVector;
import java.awt.geom.AffineTransform;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;

 * $Id:,v 1.4 2008/10/14 22:31:46 rah003 Exp $
 * Copyright 2006 Sun Microsystems, Inc., 4150 Network Circle,
 * Santa Clara, California 95054, U.S.A. All rights reserved.
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * Lesser General Public License for more details.
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
public class Utils {

  public static Shape generateShapeFromText(Font font, char ch) {
    return generateShapeFromText(font, String.valueOf(ch));

  public static Shape generateShapeFromText(Font font, String string) {
    BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2 = img.createGraphics();

    try {
      GlyphVector vect = font.createGlyphVector(g2.getFontRenderContext(), string);
      Shape shape = vect.getOutline(0f, (float) -vect.getVisualBounds().getY());

      return shape;
    } finally {

16.20.Draw Text
16.20.1.How do I...Draw text?How do I...Draw text?
16.20.2.Getting the Dimensions of Text
16.20.3.draw Bytes
16.20.4.Draw CharsDraw Chars
16.20.5.Draw unicode with Graphics2D
16.20.6.use Text Attributes to style text
16.20.7.Drawing Simple Text
16.20.8.Drawing Rotated Text
16.20.9.Draw string rotated clockwise 45 degrees
16.20.10.Draw string rotated counter-clockwise 45 degrees
16.20.11.TextAttribute.FONT: Set font for AttributedString
16.20.12.TextAttribute.FOREGROUND: Set color for AttributedString
16.20.13.TextAttribute.UNDERLINE: Set underline for AttributedString
16.20.14.TextAttribute.BACKGROUND: Set background for AttributedString
16.20.15.TextAttribute.STRIKETHROUGH: Set STRIKETHROUGH for AttributedString
16.20.16.TextAttribute.SIZE: Set SIZE for AttributedString
16.20.17.TextAttribute.SUPERSCRIPT: Set SUPERSCRIPT for AttributedString
16.20.18.Center text based on font metrics
16.20.19.Create a shadowed text
16.20.20.Display underlined text
16.20.21.Display vertical text
16.20.22.Use AffineTransform to draw vertical text
16.20.23.Display unicode text
16.20.24.Display some lyrics on the panel.
16.20.25.Paint a calendar
16.20.26.Generate Shape From Text