--- /dev/null
+package jalview.gui;
+
+import java.awt.Canvas;
+import java.awt.Font;
+import java.awt.FontMetrics;
+
+import org.junit.Test;
+
+public class FontChooserTest
+{
+
+ /**
+ * Not a real test as it runs no methods on FontChooser and makes no
+ * assertions, but this method writes to sysout the names of any (currently
+ * available, plain) fonts and point sizes that would be rejected by Jalview's
+ * FontChooser as having an I-width of less than 1.0.
+ */
+ @Test
+ public void dumpInvalidFonts()
+ {
+ String[] fonts = java.awt.GraphicsEnvironment
+ .getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
+ for (int pointSize = 1;; pointSize++)
+ {
+ System.out.println(System.lineSeparator()
+ + "Fonts with insufficient width at " + pointSize + "pt:");
+ if (pointSize == 1)
+ {
+ System.out.println("All except:");
+ }
+ int badCount = 0;
+ for (String fontname : fonts)
+ {
+ Font newFont = new Font(fontname, Font.PLAIN, pointSize);
+ FontMetrics fontm = new Canvas().getFontMetrics(newFont);
+ double iw = fontm.getStringBounds("I", null).getWidth();
+ final boolean tooSmall = iw < 1d;
+ if (tooSmall)
+ {
+ badCount++;
+ }
+ if ((pointSize > 1 && tooSmall) || (pointSize == 1 && !tooSmall))
+ {
+ System.out.println(fontname);
+ }
+ }
+ if (badCount == 0)
+ {
+ break;
+ }
+ }
+ }
+
+}