< prev index next >

src/java.desktop/share/classes/sun/java2d/SunGraphicsEnvironment.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this

@@ -37,10 +37,14 @@
 import java.awt.Rectangle;
 import java.awt.Toolkit;
 import java.awt.geom.AffineTransform;
 import java.awt.image.BufferedImage;
 import java.awt.peer.ComponentPeer;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
 import java.security.AccessController;
 import java.util.Locale;
 import java.util.TreeMap;
 
 import sun.awt.DisplayChangedListener;

@@ -59,22 +63,70 @@
  * @see GraphicsConfiguration
  */
 public abstract class SunGraphicsEnvironment extends GraphicsEnvironment
     implements DisplayChangedListener {
 
-    /** Establish the default font to be used by SG2D. */
-    private final Font defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12);
+    public static boolean isOpenSolaris;
+    private static Font defaultFont;
 
     private static final boolean uiScaleEnabled;
     private static final double debugScale;
 
     static {
         uiScaleEnabled = "true".equals(AccessController.doPrivileged(
                 new GetPropertyAction("sun.java2d.uiScale.enabled", "true")));
         debugScale = uiScaleEnabled ? getScaleFactor("sun.java2d.uiScale") : -1;
     }
 
+    public SunGraphicsEnvironment() {
+        java.security.AccessController.doPrivileged(
+                                    new java.security.PrivilegedAction<Object>() {
+            public Object run() {
+                String osName = System.getProperty("os.name");
+                if ("SunOS".equals(osName)) {
+                    String version = System.getProperty("os.version", "0.0");
+                    try {
+                        float ver = Float.parseFloat(version);
+                        if (ver > 5.10f) {
+                            File f = new File("/etc/release");
+                            FileInputStream fis = new FileInputStream(f);
+                            InputStreamReader isr
+                                = new InputStreamReader(fis, "ISO-8859-1");
+                            BufferedReader br = new BufferedReader(isr);
+                            String line = br.readLine();
+                            if (line.indexOf("OpenSolaris") >= 0) {
+                                isOpenSolaris = true;
+                            } else {
+                                /* We are using isOpenSolaris as meaning
+                                 * we know the Solaris commercial fonts aren't
+                                 * present. "Solaris Next" (03/10) did not
+                                 * include these even though its was not
+                                 * OpenSolaris. Need to revisit how this is
+                                 * handled but for now as in 6ux, we'll use
+                                 * the test for a standard font resource as
+                                 * being an indicator as to whether we need
+                                 * to treat this as OpenSolaris from a font
+                                 * config perspective.
+                                 */
+                                String courierNew =
+                                    "/usr/openwin/lib/X11/fonts/TrueType/CourierNew.ttf";
+                                File courierFile = new File(courierNew);
+                                isOpenSolaris = !courierFile.exists();
+                            }
+                            fis.close();
+                        }
+                    } catch (Exception e) {
+                    }
+                }
+                /* Establish the default font to be used by SG2D etc */
+                defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12);
+
+                return null;
+            }
+        });
+    }
+
     protected GraphicsDevice[] screens;
 
     /**
      * Returns an array of all of the screen devices.
      */
< prev index next >