import java.awt.*;
import java.awt.font.*;

public class TextScale extends Component {

   public Dimension getMinimumSize() {
       return getPreferredSize();
   }
   public Dimension getPreferredSize() {
       return new Dimension(1200,300);
   }

    static final String TEXT = "The quick brown fox jumps over the lazy dog";
    static final String LONG_TEXT = TEXT + TEXT;
    static final String ARAB_TEXT = "\u0639\u0644\u064a\u0643\u0645";

   public void paint(Graphics g) {
       Graphics2D g2d = (Graphics2D)g;
       Dimension d = getSize();
       g.setColor(Color.white);
       g.fillRect(0,0,d.width,d.height);
       g.setColor(Color.black);

       Font font = new Font("Dialog", Font.PLAIN, 12);
       g.setFont(font);
       FontRenderContext frc1 = g2d.getFontRenderContext();
       TextLayout tl1 = new TextLayout(LONG_TEXT, font, frc1);
       int sw1 = g2d.getFontMetrics().stringWidth(LONG_TEXT);
       g.drawString(LONG_TEXT, 5, 20);
       g2d.drawLine(5, 23, 5+sw1, 23);
       tl1.draw(g2d, 5f, 40f);
       g2d.drawLine(5, 43, 5+sw1, 43);
       g2d.scale(2, 2);
       int sw2 = g2d.getFontMetrics().stringWidth(LONG_TEXT);
       FontRenderContext frc2 = g2d.getFontRenderContext();
       TextLayout tl2 = new TextLayout(LONG_TEXT, font, frc2);
       tl1.draw(g2d, 5f, 60f);
       g2d.drawLine(5, 63, 5+sw1, 63);
       tl2.draw(g2d, 5f, 80f);
       g2d.drawLine(5, 83, 5+sw2, 83);
       g.drawString(LONG_TEXT, 5, 100);
       TextLayout arab1 = new TextLayout(ARAB_TEXT, font, frc1);
       TextLayout arab2 = new TextLayout(ARAB_TEXT, font, frc2);
       arab1.draw(g2d, 5f, 120);
       arab2.draw(g2d, 5f, 140);
       
   }

   public static void main(String args[]) {
       final Frame f = new Frame("TextScale");
       f.add("Center", new TextScale());
       f.pack();
       f.show();
  }
}
