From 98e6e2ffd4156c7c156828d0034f9d6d63836e39 Mon Sep 17 00:00:00 2001 From: gmungoc Date: Wed, 22 Apr 2015 14:28:44 +0100 Subject: [PATCH] 'Test' added to help identify "too small" font families/sizes --- test/jalview/gui/FontChooserTest.java | 54 +++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 test/jalview/gui/FontChooserTest.java diff --git a/test/jalview/gui/FontChooserTest.java b/test/jalview/gui/FontChooserTest.java new file mode 100644 index 0000000..d724fac --- /dev/null +++ b/test/jalview/gui/FontChooserTest.java @@ -0,0 +1,54 @@ +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; + } + } + } + +} -- 1.7.10.2