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. |