package org.geogebra.common.util.lang;
@SuppressWarnings("javadoc")
public class Unicode {
// used by Giac for polar separator instead of ;
// eg (2;3)
// space needed to avoid encoding problem (probably with $wnd.Module.cwrap,
// see CASGiacW)
final public static char MEASURED_ANGLE = '\u2221';
final public static String MEASURED_ANGLE_SPACE = MEASURED_ANGLE + " ";
public static final char MULTIPLY = '\u00d7';
public static final String DIVIDE = "\u00f7";
final public static char MINUS = '\u2212';
final public static char LESS_EQUAL = '\u2264';
final public static char GREATER_EQUAL = '\u2265';
final public static char INFINITY = '\u221e';
final public static String MINUS_INFINITY = "-\u221e";
final public static char Superscript_Minus = '\u207b';
final public static char Superscript_0 = '\u2070';
final public static char Superscript_1 = '\u00b9';
final public static char Superscript_2 = '\u00b2';
final public static char Superscript_3 = '\u00b3';
final public static char Superscript_4 = '\u2074';
final public static char Superscript_5 = '\u2075';
final public static char Superscript_6 = '\u2076';
final public static char Superscript_7 = '\u2077';
final public static char Superscript_8 = '\u2078';
final public static char Superscript_9 = '\u2079';
final public static char ZERO_WIDTH_SPACE = '\u200b';
final public static char RightToLeftMark = '\u200f';
final public static String RightToLeftUnaryMinusSign = "\u200f-\u200f";
final public static char LeftToRightMark = '\u200e';
final public static String superscriptMinusOneBracket = "\u207b\u00b9(";
final public static char DEGREE_CHAR = '\u00b0';
final public static String DEGREE = Character.toString(DEGREE_CHAR);
final public static char eGrave = '\u00E8';
final public static char eAcute = '\u00E9';
/** Unicode symbol for e */
final public static char eulerChar = '\u212f';
final public static String EULER_STRING = eulerChar + "";
final public static String EULER_GAMMA_STRING = "\u212F_\u03B3";
public static final String alphaBetaGamma = "\u03b1\u03b2\u03b3";
// lower case Greek
public static final char alpha = '\u03B1';
public static final char beta = '\u03B2';
public static final char gamma = '\u03B3';
public static final char delta = '\u03B4';
public static final char epsilon = '\u03B5';
public static final char zeta = '\u03B6';
public static final char eta = '\u03B7';
public static final char theta = '\u03B8';
public static final String thetaStr = "\u03B8";
public static final char iota = '\u03B9';
public static final char kappa = '\u03BA';
public static final char lambda = '\u03BB';
public static final String lambdaStr = "\u03BB";
public static final char mu = '\u03BC';
public static final char nu = '\u03BD';
public static final char xi = '\u03BE';
public static final char omicron = '\u03BF';
public static final char pi = '\u03C0';
public static final char rho = '\u03C1';
public static final char sigmaf = '\u03C2'; // sigma, final form
public static final char sigma = '\u03C3';
public static final char tau = '\u03C4';
public static final char upsilon = '\u03C5';
// \\varphi, curly
public static final char phi = '\u03C6';
// \\phi "straight"
public static final char phi_symbol = '\u03D5';
public static final char chi = '\u03C7';
public static final char psi = '\u03C8';
public static final char omega = '\u03C9';
final public static String PI_STRING = Character.toString(pi);
// UPPER CASE Greek
public static final char Alpha = '\u0391';
public static final char Beta = '\u0392';
public static final char Gamma = '\u0393';
public static final char Delta = '\u0394';
public static final char Epsilon = '\u0395';
public static final char Zeta = '\u0396';
public static final char Eta = '\u0397';
public static final char Theta = '\u0398';
public static final char Iota = '\u0399';
public static final char Kappa = '\u039A';
public static final char Lambda = '\u039B';
public static final char Mu = '\u039C';
public static final char Nu = '\u039D';
public static final char Xi = '\u039E';
public static final char Omicron = '\u039F';
public static final char Pi = '\u03A0';
public static final char Rho = '\u03A1';
// there is no Sigmaf, and no \U03A2 character either
public static final char Sigma = '\u03A3';
public static final char Tau = '\u03A4';
public static final char Upsilon = '\u03A5';
public static final char Phi = '\u03A6';
public static final char Chi = '\u03A7';
public static final char Psi = '\u03A8';
public static final char Omega = '\u03A9';
public static final char SQUARE_ROOT = '\u221a';
public static final String PLUSMINUS = "\u00b1";
public static final String NOTEQUAL = "\u2260";
public static final String NOT = "\u00ac";
public static final String AND = "\u2227";
public static final String OR = "\u2228";
public static final String PARALLEL = "\u2225";
public static final char PERPENDICULAR = '\u22a5';
public static final char IS_ELEMENT_OF = '\u2208';
public static final char IS_SUBSET_OF = '\u2286';
public static final char IS_SUBSET_OF_STRICT = '\u2282';
public static final String COLON_EQUALS = "\u2254";
public static final String SPACE = " ";
public static final String ANGLE = "\u2220";
public static final String ACCENT_ACUTE = "\u00b4";
public static final String ACCENT_GRAVE = "\u0060";
public static final String ACCENT_CARON = "\u02c7";
public static final String ACCENT_CIRCUMFLEX = "\u005e";
public static final String QUESTEQ = "\u225f";
final public static char FEMININE_ORDINAL_INDICATOR = '\u00aa';
// GREEK SMALL LETTER IOTA WITH TONOS
final public static String IMAGINARY = "\u03af";
// non-breaking (hard) space
public static final String NBSP = "\u00a0";
/* helper Unicode strings for fixing Hungarian translations */
// These endings will get -re, -nek, -hez:
final public static String translationFixHu_endE1 = "bcde\u00E9fgi\u00EDjlmnprstvwxz1479'";
// These endings will get -ra, -nak, -ban, -ba, -hoz:
final public static String translationFixHu_endO1 = "ahko\u00F3qu\u00FAy368";
// These endings will get -re, -nek, -ben, -be, -ho(umlaut)z:
final public static String translationFixHu_endOE1 = "\u00F6\u0151\u00FC\u017125";
// "-ho(umlaut)z":
final public static String translationFixHu_oe = "\u00F6";
final public static String translationFixHu_hoez = "h\u00F6z";
// fractions
final public static String fraction1_8 = "\u215b";
final public static String fraction1_4 = "\u00bc";
final public static String fraction3_8 = "\u215c";
final public static String fraction1_2 = "\u00bd";
final public static String fraction5_8 = "\u215d";
final public static String fraction3_4 = "\u00be";
final public static String fraction7_8 = "\u215e";
// various characters which hang down below the line
// gjy with/without accents
// characters with cedillas
// some Greek, Russian, Malayalam, Arabic
public static final String charactersWithDescenders = "\u00B5\u1EF3\u0177\u0135\u0157\u0163\u0137\u015F\u0137\u013C\u00E7\u0146\u1EF9\u011F\u011D\u0123\u00FDgjy\u03BE\u03B2\u03C8\u03B3\u03B7\u03C2\u0444\u0449\u0446\u0D71\u0D6C\u0D6B\u0D33\u0D67\u0630\u0648\u0635\u0628\u0631\u064D\u0633\u062E\u064A\u064D";
public static final char nDash = '\u2013';
public static final char ArabicComma = '\u066b';
public static final char ellipsis = '\u2026';
public static final char SECTION_SIGN = '\u00a7';
public static final char VECTOR_PRODUCT = '\u2297';
public static final char OPEN_DOUBLE_QUOTE = '\u201C';
public static final char CLOSE_DOUBLE_QUOTE = '\u201D';
// http://www.xe.com/symbols.php
public static final String CURRENCY_POUND = "\u00a3";
public static final String CURRENCY_EURO = "\u20ac";
public static final String CURRENCY_DOLLAR = "$";
public static final String CURRENCY_YEN = "\u00a5";
public static final String CURRENCY_WON = "\u20a9";
public static final String CURRENCY_BAHT = "\u03ef";
public static final String CURRENCY_DONG = "\u20ab";
public static final String CURRENCY_SHEKEL = "\u20aa";
public static final String CURRENCY_TUGHRIK = "\u20ae";
public static final String CURRENCY_RUPEE = "\u20a8";
public static final String CURRENCY_INDIAN_RUPEE = "\u20b9";
public static final String FORTY_FIVE_DEGREES = "45" + DEGREE_CHAR;
public static final String IMPLIES = "\u2192";
public static final String CAS_OUTPUT_PREFIX = "\u2192";
public static final String CAS_OUTPUT_PREFIX_RTL = "\u2190";
public static final String CAS_OUTPUT_KEEPINPUT = "\u2713";
public static final String CAS_OUTPUT_NUMERIC = "\u2248";
public static final char micro = '\u00b5';
public static final char LCEIL = '\u2308';
public static final char RCEIL = '\u2309';
public static final char LFLOOR = '\u230a';
public static final char RFLOOR = '\u230b';
public static final char HASHTAG = '\u0023';
public static final char AMPERSAND = '\u0026';
public static final char NOT_SIGN = '\u00AC';
/**
* converts an integer to a unicode superscript string (including minus
* sign) eg for use as a power
*
* @author Michael
*/
final public static String numberToIndex(int i0) {
int i = i0;
final StringBuilder sb = new StringBuilder();
boolean negative = false;
if (i < 0) {
negative = true;
i = -i;
}
if (i == 0) {
sb.append(Superscript_0); // zero
} else {
while (i > 0) {
switch (i % 10) {
default:
case 0:
sb.insert(0, Superscript_0);
break;
case 1:
sb.insert(0, Superscript_1);
break;
case 2:
sb.insert(0, Superscript_2);
break;
case 3:
sb.insert(0, Superscript_3);
break;
case 4:
sb.insert(0, Superscript_4);
break;
case 5:
sb.insert(0, Superscript_5);
break;
case 6:
sb.insert(0, Superscript_6);
break;
case 7:
sb.insert(0, Superscript_7);
break;
case 8:
sb.insert(0, Superscript_8);
break;
case 9:
sb.insert(0, Superscript_9);
break;
}
i = i / 10;
}
}
if (negative) {
sb.insert(0, Superscript_Minus);
}
return sb.toString();
}
final public static boolean isSuperscriptDigit(final char c) {
return ((c >= Superscript_0) && (c <= Superscript_9))
|| (c == Superscript_1) || (c == Superscript_2)
|| (c == Superscript_3);
}
public static String[] getSetOfSymbols(int symbolsStartValue,
int symbolsNumber) {
String[] symbols = new String[symbolsNumber];
for (int i = 0; i < symbolsNumber; i++) {
symbols[i] = "" + (char) (symbolsStartValue + i);
}
return symbols;
}
}