jdk/src/share/classes/sun/font/FontUtilities.java
changeset 4826 878c0606a10c
parent 3938 ef327bd847c0
child 5506 202f599c92aa
equal deleted inserted replaced
4825:2398a67f1f58 4826:878c0606a10c
    30 import java.io.File;
    30 import java.io.File;
    31 import java.io.FileInputStream;
    31 import java.io.FileInputStream;
    32 import java.io.InputStreamReader;
    32 import java.io.InputStreamReader;
    33 import java.security.AccessController;
    33 import java.security.AccessController;
    34 
    34 
       
    35 import java.security.PrivilegedAction;
    35 import javax.swing.plaf.FontUIResource;
    36 import javax.swing.plaf.FontUIResource;
    36 
    37 
    37 import sun.security.action.GetPropertyAction;
       
    38 import sun.util.logging.PlatformLogger;
    38 import sun.util.logging.PlatformLogger;
    39 
    39 
    40 /**
    40 /**
    41  * A collection of utility methods.
    41  * A collection of utility methods.
    42  */
    42  */
    43 public final class FontUtilities {
    43 public final class FontUtilities {
    44 
    44 
    45     public static final boolean isSolaris;
    45     public static boolean isSolaris;
    46 
    46 
    47     public static final boolean isLinux;
    47     public static boolean isLinux;
    48 
    48 
    49     public static final boolean isSolaris8;
    49     public static boolean isSolaris8;
    50 
    50 
    51     public static final boolean isSolaris9;
    51     public static boolean isSolaris9;
    52 
    52 
    53     public static final boolean isOpenSolaris;
    53     public static boolean isOpenSolaris;
    54 
    54 
    55     public static final boolean useT2K;
    55     public static boolean useT2K;
    56 
    56 
    57     public static final boolean isWindows;
    57     public static boolean isWindows;
    58 
    58 
    59     public static final boolean isOpenJDK;
    59     public static boolean isOpenJDK;
    60 
    60 
    61     static final String LUCIDA_FILE_NAME = "LucidaSansRegular.ttf";
    61     static final String LUCIDA_FILE_NAME = "LucidaSansRegular.ttf";
    62 
    62 
    63     // This static initializer block figures out the OS constants.
    63     // This static initializer block figures out the OS constants.
    64     static {
    64     static {
    65 
    65 
    66         String osName = AccessController.doPrivileged(
    66         AccessController.doPrivileged(new PrivilegedAction () {
    67                                 new GetPropertyAction("os.name", "unknownOS"));
    67             public Object run() {
    68         isSolaris = osName.startsWith("SunOS");
    68                 String osName = System.getProperty("os.name", "unknownOS");
    69 
    69                 isSolaris = osName.startsWith("SunOS");
    70         isLinux = osName.startsWith("Linux");
    70 
    71 
    71                 isLinux = osName.startsWith("Linux");
    72         String t2kStr = AccessController.doPrivileged(
    72 
    73                               new GetPropertyAction("sun.java2d.font.scaler"));
    73                 String t2kStr = System.getProperty("sun.java2d.font.scaler");
    74         if (t2kStr != null) {
    74                 if (t2kStr != null) {
    75             useT2K = "t2k".equals(t2kStr);
    75                     useT2K = "t2k".equals(t2kStr);
    76         } else {
    76                 } else {
    77             useT2K = false;
    77                     useT2K = false;
    78         }
    78                 }
    79         if (isSolaris) {
    79                 if (isSolaris) {
    80             String version = AccessController.doPrivileged(
    80                     String version = System.getProperty("os.version", "0.0");
    81                                    new GetPropertyAction("os.version", "0.0"));
    81                     isSolaris8 = version.startsWith("5.8");
    82             isSolaris8 = version.startsWith("5.8");
    82                     isSolaris9 = version.startsWith("5.9");
    83             isSolaris9 = version.startsWith("5.9");
    83                     float ver = Float.parseFloat(version);
    84             float ver = Float.parseFloat(version);
    84                     if (ver > 5.10f) {
    85             if (ver > 5.10f) {
    85                         File f = new File("/etc/release");
    86                 File f = new File("/etc/release");
    86                         String line = null;
    87                 String line = null;
    87                         try {
    88                 try {
    88                             FileInputStream fis = new FileInputStream(f);
    89                     FileInputStream fis = new FileInputStream(f);
    89                             InputStreamReader isr = new InputStreamReader(
    90                     InputStreamReader isr = new InputStreamReader(
       
    91                                                             fis, "ISO-8859-1");
    90                                                             fis, "ISO-8859-1");
    92                     BufferedReader br = new BufferedReader(isr);
    91                             BufferedReader br = new BufferedReader(isr);
    93                     line = br.readLine();
    92                             line = br.readLine();
    94                     fis.close();
    93                             fis.close();
    95                 } catch (Exception ex) {
    94                         } catch (Exception ex) {
    96                     // Nothing to do here.
    95                             // Nothing to do here.
    97                 }
    96                         }
    98                 if (line != null && line.indexOf("OpenSolaris") >= 0) {
    97                         if (line != null && line.indexOf("OpenSolaris") >= 0) {
    99                     isOpenSolaris = true;
    98                             isOpenSolaris = true;
       
    99                         } else {
       
   100                             isOpenSolaris = false;
       
   101                         }
       
   102                     } else {
       
   103                         isOpenSolaris = false;
       
   104                     }
   100                 } else {
   105                 } else {
       
   106                     isSolaris8 = false;
       
   107                     isSolaris9 = false;
   101                     isOpenSolaris = false;
   108                     isOpenSolaris = false;
   102                 }
   109                 }
   103             } else {
   110                 isWindows = osName.startsWith("Windows");
   104                 isOpenSolaris= false;
   111                 String jreLibDirName = System.getProperty("java.home", "")
       
   112                                                       + File.separator + "lib";
       
   113                 String jreFontDirName =
       
   114                         jreLibDirName + File.separator + "fonts";
       
   115                 File lucidaFile = new File(jreFontDirName + File.separator
       
   116                                            + LUCIDA_FILE_NAME);
       
   117                 isOpenJDK = !lucidaFile.exists();
       
   118                 return null;
   105             }
   119             }
   106         } else {
   120         });
   107             isSolaris8 = false;
       
   108             isSolaris9 = false;
       
   109             isOpenSolaris = false;
       
   110         }
       
   111         isWindows = osName.startsWith("Windows");
       
   112         String jreLibDirName = AccessController.doPrivileged(
       
   113                new GetPropertyAction("java.home","")) + File.separator + "lib";
       
   114         String jreFontDirName = jreLibDirName + File.separator + "fonts";
       
   115         File lucidaFile =
       
   116                 new File(jreFontDirName + File.separator + LUCIDA_FILE_NAME);
       
   117         isOpenJDK = !lucidaFile.exists();
       
   118     }
   121     }
   119 
   122 
   120     /**
   123     /**
   121      * Referenced by code in the JDK which wants to test for the
   124      * Referenced by code in the JDK which wants to test for the
   122      * minimum char code for which layout may be required.
   125      * minimum char code for which layout may be required.