JRE-43 Font.getFamily() does not work in headless mode

Added software rendered golden images
diff --git a/idea/java/tests/src/quality/text/DroidFontTest.java b/idea/java/tests/src/quality/text/DroidFontTest.java
index fac4c33..79c4bca 100644
--- a/idea/java/tests/src/quality/text/DroidFontTest.java
+++ b/idea/java/tests/src/quality/text/DroidFontTest.java
@@ -35,10 +35,14 @@
     private void doTestFont(String aliasName, String name, int style, int size)
             throws Exception {
 
+        String[] testDataVariant = {
+                "osx_hardware_rendering", "osx_software_rendering"};
+
         String testDataStr = System.getProperty("testdata");
         assertNotNull("testdata property is not set", testDataStr);
 
-        File testData = new File(testDataStr, "quality" + File.separator + "text");
+        File testData = new File(testDataStr, "quality" + File.separator +
+                "text");
         assertTrue("Test data dir does not exist", testData.exists());
 
         String testStr = abc.toUpperCase() + abc + digits;
@@ -51,7 +55,8 @@
 
         g2d.setFont(f);
         g2d.setColor(Color.WHITE);
-        Rectangle2D bnd = f.getStringBounds(testStr, g2d.getFontRenderContext());
+        Rectangle2D bnd = f.getStringBounds(testStr,
+                g2d.getFontRenderContext());
 
         g2d.drawString(testStr, 0, size + 3);
 
@@ -63,29 +68,53 @@
         String gfName = name.toLowerCase().replace(" ", "") +
                 Integer.toString(style) + "_" + Integer.toString(size) + ".png";
 
-        File goldenFile = new File(testData, gfName);
         if (System.getProperty("gentestdata") == null) {
-            BufferedImage goldenImage = ImageIO.read(goldenFile);
-            assertTrue("Golden image and result have different sizes",
-                    resultImage.getWidth() == goldenImage.getWidth() &&
-                            resultImage.getHeight() == resultImage.getHeight());
+            boolean failed = true;
+            String failureReason = "";
+            for (String variant : testDataVariant) {
+                File goldenFile = new File(testData, variant + File.separator +
+                        gfName);
 
-            Raster gRaster = goldenImage.getData();
-            Raster rRaster = resultImage.getData();
-            int[] gArr = new int[3];
-            int[] rArr = new int[3];
-            for (int i = 0; i < gRaster.getWidth(); i++) {
-                for (int j = 0; j < gRaster.getHeight(); j++) {
-                    gRaster.getPixel(i, j, gArr);
-                    rRaster.getPixel(i, j, rArr);
-                    assertArrayEquals(
-                            "Different pixels found at (" + i + "," + j + ")",
-                            gArr, rArr);
+                BufferedImage goldenImage = ImageIO.read(goldenFile);
+                failed = true;
+                if (resultImage.getWidth() != goldenImage.getWidth() ||
+                    resultImage.getHeight() != resultImage.getHeight())
+                {
+                    failureReason += variant +
+                            " : Golden image and result have different sizes\n";
+                    continue;
                 }
+
+                Raster gRaster = goldenImage.getData();
+                Raster rRaster = resultImage.getData();
+                int[] gArr = new int[3];
+                int[] rArr = new int[3];
+                failed = false;
+                scan:
+                for (int i = 0; i < gRaster.getWidth(); i++) {
+                    for (int j = 0; j < gRaster.getHeight(); j++) {
+                        gRaster.getPixel(i, j, gArr);
+                        rRaster.getPixel(i, j, rArr);
+                        assertTrue(gArr.length == rArr.length);
+                        for (int k = 0; k < gArr.length; k++) {
+                            if (gArr[k] != rArr[k]) {
+                                failureReason += variant +
+                                        " : Different pixels found " +
+                                        "at (" + i + "," + j + ")";
+                                failed = true;
+                                break scan;
+                            }
+                        }
+                    }
+                }
+
+                if (!failed) break;
             }
+
+            if (failed) throw new RuntimeException(failureReason);
         }
         else {
-            ImageIO.write(resultImage, "png", goldenFile);
+            ImageIO.write(resultImage, "png", new File(testData, gfName));
         }
     }
 
diff --git a/idea/java/tests/testdata/quality/text/droidsans0_20.png b/idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidsans0_20.png
similarity index 100%
rename from idea/java/tests/testdata/quality/text/droidsans0_20.png
rename to idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidsans0_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/droidsans1_20.png b/idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidsans1_20.png
similarity index 100%
rename from idea/java/tests/testdata/quality/text/droidsans1_20.png
rename to idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidsans1_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/droidsansmono0_20.png b/idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidsansmono0_20.png
similarity index 100%
rename from idea/java/tests/testdata/quality/text/droidsansmono0_20.png
rename to idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidsansmono0_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/droidsansmonodotted0_20.png b/idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidsansmonodotted0_20.png
similarity index 100%
rename from idea/java/tests/testdata/quality/text/droidsansmonodotted0_20.png
rename to idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidsansmonodotted0_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/droidsansmonoslashed0_20.png b/idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidsansmonoslashed0_20.png
similarity index 100%
rename from idea/java/tests/testdata/quality/text/droidsansmonoslashed0_20.png
rename to idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidsansmonoslashed0_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/droidserif0_20.png b/idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidserif0_20.png
similarity index 100%
rename from idea/java/tests/testdata/quality/text/droidserif0_20.png
rename to idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidserif0_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/droidserif1_20.png b/idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidserif1_20.png
similarity index 100%
rename from idea/java/tests/testdata/quality/text/droidserif1_20.png
rename to idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidserif1_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/droidserif2_20.png b/idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidserif2_20.png
similarity index 100%
rename from idea/java/tests/testdata/quality/text/droidserif2_20.png
rename to idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidserif2_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/droidserif3_20.png b/idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidserif3_20.png
similarity index 100%
rename from idea/java/tests/testdata/quality/text/droidserif3_20.png
rename to idea/java/tests/testdata/quality/text/osx_hardware_rendering/droidserif3_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsans0_20.png b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsans0_20.png
new file mode 100644
index 0000000..70e6f56
--- /dev/null
+++ b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsans0_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsans1_20.png b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsans1_20.png
new file mode 100644
index 0000000..b8386dc
--- /dev/null
+++ b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsans1_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsansmono0_20.png b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsansmono0_20.png
new file mode 100644
index 0000000..cf1a89d
--- /dev/null
+++ b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsansmono0_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsansmonodotted0_20.png b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsansmonodotted0_20.png
new file mode 100644
index 0000000..caa9d2c
--- /dev/null
+++ b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsansmonodotted0_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsansmonoslashed0_20.png b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsansmonoslashed0_20.png
new file mode 100644
index 0000000..caa9d2c
--- /dev/null
+++ b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidsansmonoslashed0_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/osx_software_rendering/droidserif0_20.png b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidserif0_20.png
new file mode 100644
index 0000000..8f7b89e
--- /dev/null
+++ b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidserif0_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/osx_software_rendering/droidserif1_20.png b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidserif1_20.png
new file mode 100644
index 0000000..32d0dff
--- /dev/null
+++ b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidserif1_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/osx_software_rendering/droidserif2_20.png b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidserif2_20.png
new file mode 100644
index 0000000..2e3b1b3
--- /dev/null
+++ b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidserif2_20.png
Binary files differ
diff --git a/idea/java/tests/testdata/quality/text/osx_software_rendering/droidserif3_20.png b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidserif3_20.png
new file mode 100644
index 0000000..2d1842b
--- /dev/null
+++ b/idea/java/tests/testdata/quality/text/osx_software_rendering/droidserif3_20.png
Binary files differ