Manipulate the elements of a GlyphVector in Swing

Main.java:

import java.awt.event.*;
import java.awt.geom.*;
import java.awt.font.*;
import javax.swing.*;
import java.util.*;
import java.awt.*;
 
public class Main extends JFrame { 
   public Main() {
      addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent we) {
            System.exit(1);
         }
      });   
   }
 
   public void paint(Graphics g) {
      Graphics2D g2d = (Graphics2D) g;
 
      g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                           RenderingHints.VALUE_ANTIALIAS_ON);
 
      String text = "90% of all statistics are made up!";
      Font font = new Font("Serif", Font.PLAIN, 24);
      FontRenderContext frc = g2d.getFontRenderContext();
      g2d.translate(40, 100);
 
      GlyphVector gv = font.createGlyphVector(frc, text);
      int numGlyps = gv.getNumGlyphs();
      Random r = new Random();
      for (int i=0; i<numGlyps; i++) {
         Point2D p = gv.getGlyphPosition(i);
         AffineTransform at = AffineTransform.getTranslateInstance(p.getX(), p.getY());
 
         at.scale(1, 0.2+r.nextFloat()*2);
 
         Shape glyph = gv.getGlyphOutline(i);
         Shape newGlyph = at.createTransformedShape(glyph);
         g2d.fill(newGlyph);
      }
   }
   
   public static void main(String []args) {
      Main main = new Main();
      main.setSize(400, 150);
      main.setVisible(true);
   }
}