/* */ package com.ibm.icu.charset;
/* */
/* */ import com.ibm.icu.impl.InvalidFormatException;
/* */ import java.io.IOException;
/* */ import java.nio.charset.Charset;
/* */ import java.nio.charset.UnsupportedCharsetException;
/* */ import java.nio.charset.spi.CharsetProvider;
/* */ import java.util.Collection;
/* */ import java.util.HashMap;
/* */ import java.util.Iterator;
/* */ import java.util.Map;
/* */ import java.util.Set;
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public final class CharsetProviderICU
/* */ extends CharsetProvider
/* */ {
/* 29 */ private static String optionsString = null;
/* 30 */ private static boolean gettingJavaCanonicalName = false;
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public final Charset charsetForName(String charsetName)
/* */ {
/* */ try
/* */ {
/* 49 */ charsetName = processOptions(charsetName);
/* */
/* 51 */ String icuCanonicalName = getICUCanonicalName(charsetName);
/* */
/* */
/* 54 */ if ((icuCanonicalName == null) || (icuCanonicalName.length() == 0))
/* */ {
/* */
/* 57 */ return getCharset(charsetName);
/* */ }
/* 59 */ return getCharset(icuCanonicalName);
/* */ }
/* */ catch (UnsupportedCharsetException ex) {}catch (IOException ex) {}
/* */
/* 63 */ return null;
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public final Charset charsetForName(String charsetName, String classPath)
/* */ {
/* 79 */ return charsetForName(charsetName, classPath, null);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public Charset charsetForName(String charsetName, String classPath, ClassLoader loader)
/* */ {
/* 92 */ CharsetMBCS cs = null;
/* */ try {
/* 94 */ cs = new CharsetMBCS(charsetName, charsetName, new String[0], classPath, loader);
/* */ }
/* */ catch (InvalidFormatException e) {}
/* */
/* 98 */ return cs;
/* */ }
/* */
/* */
/* */
/* */
/* */ /**
/* */ * @deprecated
/* */ */
/* */ public static final String getICUCanonicalName(String enc)
/* */ throws UnsupportedCharsetException
/* */ {
/* 110 */ String canonicalName = null;
/* 111 */ String ret = null;
/* */ try {
/* 113 */ if (enc != null) {
/* 114 */ if ((canonicalName = UConverterAlias.getCanonicalName(enc, "MIME")) != null) {
/* 115 */ ret = canonicalName;
/* 116 */ } else if ((canonicalName = UConverterAlias.getCanonicalName(enc, "IANA")) != null) {
/* 117 */ ret = canonicalName;
/* 118 */ } else if ((canonicalName = UConverterAlias.getAlias(enc, 0)) != null)
/* */ {
/* 120 */ ret = canonicalName;
/* */
/* */ }
/* 123 */ else if ((enc.indexOf("x-") == 0) || (enc.indexOf("X-") == 0))
/* */ {
/* */
/* */
/* */
/* */
/* */
/* 130 */ if ((canonicalName = UConverterAlias.getAlias(enc.substring(2), 0)) != null) {
/* 131 */ ret = canonicalName;
/* */ } else {
/* 133 */ ret = "";
/* */ }
/* */ }
/* */ }
/* */
/* 138 */ return "";
/* */
/* */ }
/* */ catch (IOException ex)
/* */ {
/* 143 */ throw new UnsupportedCharsetException(enc);
/* */ }
/* */ }
/* */
/* 147 */ private static final Charset getCharset(String icuCanonicalName) throws IOException { String[] aliases = getAliases(icuCanonicalName);
/* 148 */ String canonicalName = getJavaCanonicalName(icuCanonicalName);
/* */
/* */
/* */
/* */
/* */
/* */
/* 155 */ if ((!gettingJavaCanonicalName) && (optionsString != null)) {
/* 156 */ icuCanonicalName = icuCanonicalName.concat(optionsString);
/* 157 */ optionsString = null;
/* */ }
/* */
/* 160 */ return CharsetICU.getCharset(icuCanonicalName, canonicalName, aliases);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ /**
/* */ * @deprecated
/* */ */
/* */ public static String getJavaCanonicalName(String charsetName)
/* */ {
/* 179 */ if (charsetName == null) {
/* 180 */ return null;
/* */ }
/* */ try {
/* 183 */ String cName = null;
/* */
/* 185 */ if ((cName = UConverterAlias.getStandardName(charsetName, "MIME")) == null)
/* */ {
/* 187 */ if ((cName = UConverterAlias.getStandardName(charsetName, "IANA")) == null)
/* */ {
/* */
/* */
/* */
/* */
/* 193 */ int aliasNum = UConverterAlias.countAliases(charsetName);
/* */
/* 195 */ for (int i = 0; i < aliasNum; i++) {
/* 196 */ String name = UConverterAlias.getAlias(charsetName, i);
/* 197 */ if ((name != null) && (name.indexOf("x-") == 0)) {
/* 198 */ cName = name;
/* 199 */ break;
/* */ }
/* */ }
/* */
/* */
/* 204 */ if ((cName == null) || (cName.length() == 0)) {
/* 205 */ String name = UConverterAlias.getStandardName(charsetName, "UTR22");
/* 206 */ if ((name == null) && (charsetName.indexOf(",") != -1)) {
/* 207 */ name = UConverterAlias.getAlias(charsetName, 1);
/* */ }
/* */
/* 210 */ if (name == null) {
/* 211 */ name = charsetName;
/* */ }
/* 213 */ cName = "x-" + name;
/* */ }
/* */ }
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* 223 */ if ((cName != null) &&
/* 224 */ (!gettingJavaCanonicalName)) {
/* 225 */ gettingJavaCanonicalName = true;
/* 226 */ if (Charset.isSupported(cName)) {
/* 227 */ String testName = Charset.forName(cName).name();
/* */
/* 229 */ if ((!testName.equals(cName)) &&
/* 230 */ (getICUCanonicalName(testName).length() > 0)) {
/* 231 */ cName = testName;
/* */ }
/* */ }
/* */
/* 235 */ gettingJavaCanonicalName = false;
/* */ }
/* */
/* 238 */ return cName;
/* */ }
/* */ catch (IOException ex) {}
/* */
/* 242 */ return null;
/* */ }
/* */
/* */
/* */
/* */ /**
/* */ * @deprecated
/* */ */
/* */ private static final String[] getAliases(String encName)
/* */ throws IOException
/* */ {
/* 253 */ String[] ret = null;
/* 254 */ int aliasNum = 0;
/* 255 */ int i = 0;
/* 256 */ int j = 0;
/* 257 */ String[] aliasArray = new String[50];
/* */
/* 259 */ if (encName != null) {
/* 260 */ aliasNum = UConverterAlias.countAliases(encName);
/* 261 */ i = 0; for (j = 0; i < aliasNum; i++) {
/* 262 */ String name = UConverterAlias.getAlias(encName, i);
/* 263 */ if ((name.indexOf('+') == -1) && (name.indexOf(',') == -1)) {
/* 264 */ aliasArray[(j++)] = name;
/* */ }
/* */ }
/* 267 */ ret = new String[j];
/* 268 */ for (;;) { j--; if (j < 0) break;
/* 269 */ ret[j] = aliasArray[j];
/* */ }
/* */ }
/* */
/* 273 */ return ret;
/* */ }
/* */
/* */ private static final void putCharsets(Map<Charset, String> map)
/* */ {
/* 278 */ int num = UConverterAlias.countAvailable();
/* 279 */ for (int i = 0; i < num; i++) {
/* 280 */ String name = UConverterAlias.getAvailableName(i);
/* */ try {
/* 282 */ Charset cs = getCharset(name);
/* 283 */ map.put(cs, getJavaCanonicalName(name));
/* */ }
/* */ catch (UnsupportedCharsetException ex) {}catch (IOException e) {}
/* */ }
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public final Iterator<Charset> charsets()
/* */ {
/* 298 */ HashMap<Charset, String> map = new HashMap();
/* 299 */ putCharsets(map);
/* 300 */ return map.keySet().iterator();
/* */ }
/* */
/* */
/* */
/* */ /**
/* */ * @deprecated
/* */ */
/* */ public static final String[] getAvailableNames()
/* */ {
/* 310 */ HashMap<Charset, String> map = new HashMap();
/* 311 */ putCharsets(map);
/* 312 */ return (String[])map.values().toArray(new String[0]);
/* */ }
/* */
/* */
/* */
/* */ /**
/* */ * @deprecated
/* */ */
/* */ public static final String[] getAllNames()
/* */ {
/* 322 */ int num = UConverterAlias.countAvailable();
/* 323 */ String[] names = new String[num];
/* 324 */ for (int i = 0; i < num; i++) {
/* 325 */ names[i] = UConverterAlias.getAvailableName(i);
/* */ }
/* 327 */ return names;
/* */ }
/* */
/* */ private static final String processOptions(String charsetName) {
/* 331 */ if (charsetName.indexOf(",swaplfnl") > -1)
/* */ {
/* 333 */ optionsString = ",swaplfnl";
/* */
/* 335 */ charsetName = charsetName.substring(0, charsetName.indexOf(",swaplfnl"));
/* */ }
/* */
/* 338 */ return charsetName;
/* */ }
/* */ }
/* Location: C:\Users\Ethan\Desktop\FontZip\FontTool\sfnttool.jar!\com\ibm\icu\charset\CharsetProviderICU.class
* Java compiler version: 5 (49.0)
* JD-Core Version: 0.7.1
*/