import java.awt.*; 
import java.awt.geom.*; 
import java.awt.image.*; 
import javax.imageio.*; 
import java.io.*; 

public class Test { 

  public static void main(String[] args) throws Exception { 
     AffineTransform affineTransform90Degrees = new AffineTransform(); 
     affineTransform90Degrees.rotate(Math.toRadians(90)); 
     Graphics2D graphics; 
     BufferedImage image; 

     image = new BufferedImage(200, 500, BufferedImage.TYPE_4BYTE_ABGR_PRE); 
     graphics = image.createGraphics(); 
     graphics.setColor(Color.WHITE); 
     graphics.fillRect(0, 0, 200, 500); 
     graphics.setColor(Color.BLACK); 
     // Works with any size up to 500 
     graphics.setFont(new Font("Arial", Font.PLAIN, 100).deriveFont(affineTransform90Degrees)); 
     graphics.drawString("Test", 0, 100); 
     graphics.dispose(); 
     ImageIO.write(image, "PNG", new File("works.png")); 

     image = new BufferedImage(200, 500, BufferedImage.TYPE_4BYTE_ABGR_PRE); 
     graphics = image.createGraphics(); 
     graphics.setColor(Color.WHITE); 
     graphics.fillRect(0, 0, 200, 500); 
     graphics.setColor(Color.BLACK); 
     // Doesn't work with any size larger than 100 
     graphics.setFont(new Font("Arial", Font.PLAIN, 101).deriveFont(affineTransform90Degrees)); 
     graphics.drawString("Test", 0, 100); 
     graphics.dispose(); 
     ImageIO.write(image, "PNG", new File("doesnt_work.png")); 

  } 
}