1 /*
2 * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
25 package sun.awt;
26
27 import java.io.ByteArrayOutputStream;
28 import java.io.OutputStreamWriter;
29 import java.io.IOException;
30 import java.nio.charset.Charset;
31 import java.nio.charset.CharsetEncoder;
32 import java.nio.charset.StandardCharsets;
33
34 public class FontDescriptor implements Cloneable {
35
36 static {
37 NativeLibLoader.loadLibraries();
38 initIDs();
39 }
40
41 String nativeName;
42 public CharsetEncoder encoder;
43 String charsetName;
44 private int[] exclusionRanges;
45
46 public FontDescriptor(String nativeName, CharsetEncoder encoder,
47 int[] exclusionRanges){
48
49 this.nativeName = nativeName;
50 this.encoder = encoder;
51 this.exclusionRanges = exclusionRanges;
52 this.useUnicode = false;
53 Charset cs = encoder.charset();
54 // The following looks odd but its the only public way to get the
55 // historical name if one exists and the canonical name otherwise.
56 try {
57 OutputStreamWriter osw = new OutputStreamWriter(new ByteArrayOutputStream(), cs);
58 this.charsetName = osw.getEncoding();
59 osw.close();
60 } catch (IOException ioe) {
61 }
62 }
63
64 public String getNativeName() {
65 return nativeName;
66 }
67
68 public CharsetEncoder getFontCharsetEncoder() {
69 return encoder;
70 }
71
72 public String getFontCharsetName() {
105
106 public CharsetEncoder unicodeEncoder;
107 boolean useUnicode; // set to true from native code on Unicode-based systems
108
109 public boolean useUnicode() {
110 if (useUnicode && unicodeEncoder == null) {
111 try {
112 this.unicodeEncoder = isLE?
113 StandardCharsets.UTF_16LE.newEncoder():
114 StandardCharsets.UTF_16BE.newEncoder();
115 } catch (IllegalArgumentException x) {}
116 }
117 return useUnicode;
118 }
119 static boolean isLE;
120 static {
121 String enc = java.security.AccessController.doPrivileged(
122 new sun.security.action.GetPropertyAction("sun.io.unicode.encoding",
123 "UnicodeBig"));
124 isLE = !"UnicodeBig".equals(enc);
125 }
126 }
|
1 /*
2 * Copyright (c) 1996, 2020, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
25 package sun.awt;
26
27 import java.io.ByteArrayOutputStream;
28 import java.io.OutputStreamWriter;
29 import java.io.IOException;
30 import java.nio.charset.Charset;
31 import java.nio.charset.CharsetEncoder;
32 import java.nio.charset.StandardCharsets;
33
34 public class FontDescriptor implements Cloneable {
35
36 static {
37 NativeLibLoader.loadLibraries();
38 initIDs();
39 }
40
41 String nativeName;
42 public CharsetEncoder encoder;
43 String charsetName;
44 private int[] exclusionRanges;
45 private final boolean defaultFont;
46
47 public FontDescriptor(String nativeName, CharsetEncoder encoder,
48 int[] exclusionRanges) {
49 this(nativeName, encoder, exclusionRanges, false);
50 }
51
52 public FontDescriptor(String nativeName, CharsetEncoder encoder,
53 int[] exclusionRanges, boolean defaultFont) {
54
55 this.nativeName = nativeName;
56 this.encoder = encoder;
57 this.exclusionRanges = exclusionRanges;
58 this.useUnicode = false;
59 this.defaultFont = defaultFont;
60 Charset cs = encoder.charset();
61 // The following looks odd but its the only public way to get the
62 // historical name if one exists and the canonical name otherwise.
63 try {
64 OutputStreamWriter osw = new OutputStreamWriter(new ByteArrayOutputStream(), cs);
65 this.charsetName = osw.getEncoding();
66 osw.close();
67 } catch (IOException ioe) {
68 }
69 }
70
71 public String getNativeName() {
72 return nativeName;
73 }
74
75 public CharsetEncoder getFontCharsetEncoder() {
76 return encoder;
77 }
78
79 public String getFontCharsetName() {
112
113 public CharsetEncoder unicodeEncoder;
114 boolean useUnicode; // set to true from native code on Unicode-based systems
115
116 public boolean useUnicode() {
117 if (useUnicode && unicodeEncoder == null) {
118 try {
119 this.unicodeEncoder = isLE?
120 StandardCharsets.UTF_16LE.newEncoder():
121 StandardCharsets.UTF_16BE.newEncoder();
122 } catch (IllegalArgumentException x) {}
123 }
124 return useUnicode;
125 }
126 static boolean isLE;
127 static {
128 String enc = java.security.AccessController.doPrivileged(
129 new sun.security.action.GetPropertyAction("sun.io.unicode.encoding",
130 "UnicodeBig"));
131 isLE = !"UnicodeBig".equals(enc);
132 }
133
134 public boolean isDefaultFont() {
135 return defaultFont;
136 }
137 }
|