package jas.plot; import java.util.Hashtable; final class LabelTextConverter { private void init() { hash = new Hashtable(); // Greek hash.put("Alpha", new Character((char) 0x0391)); hash.put("Beta", new Character((char) 0x0392)); hash.put("Gamma", new Character((char) 0x0393)); hash.put("Delta", new Character((char) 0x0394)); hash.put("Epsilon", new Character((char) 0x0395)); hash.put("Zeta", new Character((char) 0x0396)); hash.put("Eta", new Character((char) 0x0397)); hash.put("Theta", new Character((char) 0x0398)); hash.put("Iota", new Character((char) 0x0399)); hash.put("Kappa", new Character((char) 0x039a)); hash.put("Lambda", new Character((char) 0x039b)); hash.put("Mu", new Character((char) 0x039c)); hash.put("Nu", new Character((char) 0x039d)); hash.put("Xi", new Character((char) 0x039e)); hash.put("Omicron", new Character((char) 0x039f)); hash.put("Pi", new Character((char) 0x03a0)); hash.put("Rho", new Character((char) 0x03a1)); hash.put("Sigma", new Character((char) 0x03a3)); hash.put("Tau", new Character((char) 0x03a4)); hash.put("Upsilon", new Character((char) 0x03a5)); hash.put("Phi", new Character((char) 0x03a6)); hash.put("Chi", new Character((char) 0x03a7)); hash.put("Psi", new Character((char) 0x03a8)); hash.put("Omega", new Character((char) 0x03a9)); hash.put("a", new Character((char) 0x03b1)); hash.put("alpha", new Character((char) 0x03b1)); hash.put("b", new Character((char) 0x03b2)); hash.put("beta", new Character((char) 0x03b2)); hash.put("g", new Character((char) 0x03b3)); hash.put("gamma", new Character((char) 0x03b3)); hash.put("d", new Character((char) 0x03b4)); hash.put("delta", new Character((char) 0x03b4)); hash.put("epsilon", new Character((char) 0x03b5)); hash.put("zeta", new Character((char) 0x03b6)); hash.put("eta", new Character((char) 0x03b7)); hash.put("theta", new Character((char) 0x03b8)); hash.put("iota", new Character((char) 0x03b9)); hash.put("kappa", new Character((char) 0x03ba)); hash.put("lambda", new Character((char) 0x03bb)); hash.put("mu", new Character((char) 0x03bc)); hash.put("nu", new Character((char) 0x03bd)); hash.put("xi", new Character((char) 0x03be)); hash.put("omicron", new Character((char) 0x03bf)); hash.put("p", new Character((char) 0x03c0)); hash.put("pi", new Character((char) 0x03c0)); hash.put("rho", new Character((char) 0x03c1)); hash.put("sigmaf", new Character((char) 0x03c2)); hash.put("sigma", new Character((char) 0x03c3)); hash.put("tau", new Character((char) 0x03c4)); hash.put("upsilon", new Character((char) 0x03c5)); hash.put("phi", new Character((char) 0x03c6)); hash.put("chi", new Character((char) 0x03c7)); hash.put("psi", new Character((char) 0x03c8)); hash.put("omega", new Character((char) 0x03c9)); hash.put("thetasym", new Character((char) 0x03d1)); hash.put("upsih", new Character((char) 0x03d2)); hash.put("piv", new Character((char) 0x03d6)); // misc hash.put("amp", new Character((char) 38)); hash.put("iexcl", new Character((char) 161)); hash.put("cent", new Character((char) 162)); hash.put("pound", new Character((char) 163)); hash.put("curren", new Character((char) 164)); hash.put("yen", new Character((char) 165)); hash.put("copy", new Character((char) 169)); hash.put("ordf", new Character((char) 170)); hash.put("not", new Character((char) 172)); hash.put("reg", new Character((char) 174)); hash.put("ordm", new Character((char) 186)); hash.put("iquest", new Character((char) 191)); // math hash.put("plusmn", new Character((char) 177)); hash.put("sup2", new Character((char) 178)); hash.put("sup3", new Character((char) 179)); hash.put("micro", new Character((char) 181)); hash.put("middot", new Character((char) 183)); hash.put("sup1", new Character((char) 185)); hash.put("frac14", new Character((char) 188)); hash.put("frac12", new Character((char) 189)); hash.put("frac34", new Character((char) 190)); hash.put("times", new Character((char) 215)); hash.put("Oslash", new Character((char) 216)); hash.put("divide", new Character((char) 247)); hash.put("oslash", new Character((char) 248)); // hash.put("prime", new Character((char) 0x2032)); // hash.put("Prime", new Character((char) 0x2033)); // hash.put("frasl", new Character((char) 0x2044)); // hash.put("real", new Character((char) 0x211c)); // foreign hash.put("Agrave", new Character((char) 192)); hash.put("Aacute", new Character((char) 193)); hash.put("Acirc", new Character((char) 194)); hash.put("Atilde", new Character((char) 195)); hash.put("Auml", new Character((char) 196)); hash.put("Aring", new Character((char) 197)); hash.put("AElig", new Character((char) 198)); hash.put("Ccedil", new Character((char) 199)); hash.put("Egrave", new Character((char) 200)); hash.put("Eacute", new Character((char) 201)); hash.put("Ecirc", new Character((char) 202)); hash.put("Euml", new Character((char) 203)); hash.put("Igrave", new Character((char) 204)); hash.put("Iacute", new Character((char) 205)); hash.put("Icirc", new Character((char) 206)); hash.put("Iuml", new Character((char) 207)); hash.put("ETH", new Character((char) 208)); hash.put("Ntilde", new Character((char) 209)); hash.put("Ograve", new Character((char) 210)); hash.put("Oacute", new Character((char) 211)); hash.put("Ocirc", new Character((char) 212)); hash.put("Otilde", new Character((char) 213)); hash.put("Ouml", new Character((char) 214)); hash.put("Ugrave", new Character((char) 217)); hash.put("Uacute", new Character((char) 218)); hash.put("Ucirc", new Character((char) 219)); hash.put("Uuml", new Character((char) 220)); hash.put("Yacute", new Character((char) 221)); hash.put("THORN", new Character((char) 222)); hash.put("szlig", new Character((char) 223)); hash.put("agrave", new Character((char) 224)); hash.put("aacute", new Character((char) 225)); hash.put("acirc", new Character((char) 226)); hash.put("atilde", new Character((char) 227)); hash.put("auml", new Character((char) 228)); hash.put("aring", new Character((char) 229)); hash.put("aelig", new Character((char) 230)); hash.put("ccedil", new Character((char) 231)); hash.put("egrave", new Character((char) 232)); hash.put("eacute", new Character((char) 233)); hash.put("ecirc", new Character((char) 234)); hash.put("euml", new Character((char) 235)); hash.put("igrave", new Character((char) 236)); hash.put("iacute", new Character((char) 237)); hash.put("icirc", new Character((char) 238)); hash.put("iuml", new Character((char) 239)); hash.put("eth", new Character((char) 240)); hash.put("ntilde", new Character((char) 241)); hash.put("ograve", new Character((char) 242)); hash.put("oacute", new Character((char) 243)); hash.put("ocirc", new Character((char) 244)); hash.put("otilde", new Character((char) 245)); hash.put("ouml", new Character((char) 246)); hash.put("ugrave", new Character((char) 249)); hash.put("uacute", new Character((char) 250)); hash.put("ucirc", new Character((char) 251)); hash.put("uuml", new Character((char) 252)); hash.put("yacute", new Character((char) 253)); hash.put("thorn", new Character((char) 254)); hash.put("yuml", new Character((char) 255)); } String convert(final String s) { int amp_index = s.indexOf('&'); if (amp_index != -1) { int semic_index = s.indexOf(';', amp_index + 1); int next_amp_index = s.indexOf('&', amp_index + 1); if (semic_index != -1) { final StringBuffer buffer = new StringBuffer(s.substring(0, amp_index)); if (next_amp_index != -1 && next_amp_index < semic_index) { buffer.append(s.substring(amp_index, next_amp_index)); amp_index = next_amp_index; } String tag = s.substring(amp_index + 1, semic_index); while (true) { if (tag.startsWith("#")) { try { buffer.append((char) Integer.parseInt(tag.substring(1))); } catch (final NumberFormatException e) { buffer.append('&'); buffer.append(tag); buffer.append(';'); } } else { if (hash == null) init(); final Character unicode = (Character) hash.get(tag); if (unicode != null) { buffer.append(unicode.charValue()); } else { buffer.append('&'); buffer.append(tag); buffer.append(';'); } } amp_index = s.indexOf('&', ++semic_index); if (amp_index != -1) { final int old_semic_index = semic_index; semic_index = s.indexOf(';', amp_index + 1); next_amp_index = s.indexOf('&', amp_index + 1); if (semic_index != -1) { if (next_amp_index != -1 && next_amp_index < semic_index) { amp_index = next_amp_index; } tag = s.substring(amp_index + 1, semic_index); buffer.append(s.substring(old_semic_index, amp_index)); } else { buffer.append(s.substring(old_semic_index)); break; } } else { buffer.append(s.substring(semic_index)); break; } } return buffer.toString(); } } return s; } private Hashtable hash; }