package com.sksamuel.scrimage; import java.awt.Font; import java.awt.FontFormatException; import java.awt.GraphicsEnvironment; import java.awt.font.FontRenderContext; import java.awt.geom.Rectangle2D; import java.io.IOException; import java.io.InputStream; public class FontUtils { public static Rectangle2D fontBounds(String text, Font font) { return font.getStringBounds(text, new FontRenderContext(font.getTransform(), false, false)).getBounds2D(); } public static Font createFont(String name, int size) throws IOException, FontFormatException { return new Font(name, Font.PLAIN, size); } public static Font createTrueType(InputStream in, int size) throws IOException, FontFormatException { assert (in != null); Font font = Font.createFont(Font.TRUETYPE_FONT, in); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); ge.registerFont(font); return font.deriveFont(Font.PLAIN, size); } public static String[] fontNames() { return GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); } public static Font plain(String name, int size) { return new Font(name, Font.PLAIN, size); } public static Font italic(String name, int size) { return new Font(name, Font.ITALIC, size); } public static Font bold(String name, int size) { return new Font(name, Font.BOLD, size); } public static Font boldItalic(String name, int size) { return new Font(name, Font.BOLD | Font.ITALIC, size); } }