package edu.byu.cs.roots.opg.util; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.geom.AffineTransform; public class FontMaximizer { public static float getMaxFontSize(Graphics g, Font font, String string, float space){ AffineTransform at = AffineTransform.getRotateInstance(0); font = font.deriveFont(at); FontMetrics fm = g.getFontMetrics(font); float size = font.getSize2D(); //float width = fm.stringWidth(string); float width = (float) fm.getStringBounds(string, g).getWidth(); font = font.deriveFont(size*.98f*space/width); fm = g.getFontMetrics(font); // System.out.println(string + " space: " + space+ " width: "+ width + " font: " + size + "->" + font.getSize2D() + " new size: " + fm.stringWidth(string)); return font.getSize2D(); } }