@Nonnull protected BufferedImage[] generateImages(int charCount) { BufferedImage[] images = new BufferedImage[charCount]; BufferedImage tempImage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB); Graphics2D graphics = (Graphics2D) tempImage.getGraphics(); graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); graphics.setFont(getAwtFont()); this.metrics = graphics.getFontMetrics(); for (int index = 0; index < charCount; index++) { char ch = (char) index; BufferedImage fontImage = new BufferedImage(Math.max(getMetrics().charWidth(ch), 1), Math.max(getMetrics().getHeight(), getSize()), BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = (Graphics2D) fontImage.getGraphics(); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setFont(getAwtFont()); g2d.setColor(Color.WHITE.getAwtColor()); g2d.drawString(String.valueOf(ch), 0, metrics.getAscent()); g2d.dispose(); images[index] = fontImage; } graphics.dispose(); return images; } }