/*=============================================================================#
# Copyright (c) 2011-2016 Stephan Wahlbrink (WalWare.de) and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# Stephan Wahlbrink - initial API and implementation
#=============================================================================*/
package de.walware.rj.graphic.utils;
public final class Unicode2AdbSymbolMapping implements CharMapping {
private final static char[] ADBSYMBOL_U2C = new char[0xffff];
static {
for (int i = 0; i < ADBSYMBOL_U2C.length; i++) {
ADBSYMBOL_U2C[i] = (char) i;
}
// Generated by CodeGenAdbSymbol
ADBSYMBOL_U2C[0x0020] = 0x20; // SPACE
ADBSYMBOL_U2C[0x00A0] = 0x20; // NO-BREAK SPACE
ADBSYMBOL_U2C[0x0021] = 0x21; // EXCLAMATION MARK
ADBSYMBOL_U2C[0x2200] = 0x22; // FOR ALL
ADBSYMBOL_U2C[0x0023] = 0x23; // NUMBER SIGN
ADBSYMBOL_U2C[0x2203] = 0x24; // THERE EXISTS
ADBSYMBOL_U2C[0x0025] = 0x25; // PERCENT SIGN
ADBSYMBOL_U2C[0x0026] = 0x26; // AMPERSAND
ADBSYMBOL_U2C[0x220B] = 0x27; // CONTAINS AS MEMBER
ADBSYMBOL_U2C[0x0028] = 0x28; // LEFT PARENTHESIS
ADBSYMBOL_U2C[0x0029] = 0x29; // RIGHT PARENTHESIS
ADBSYMBOL_U2C[0x2217] = 0x2A; // ASTERISK OPERATOR
ADBSYMBOL_U2C[0x002B] = 0x2B; // PLUS SIGN
ADBSYMBOL_U2C[0x002C] = 0x2C; // COMMA
ADBSYMBOL_U2C[0x2212] = 0x2D; // MINUS SIGN
ADBSYMBOL_U2C[0x002E] = 0x2E; // FULL STOP
ADBSYMBOL_U2C[0x002F] = 0x2F; // SOLIDUS
ADBSYMBOL_U2C[0x0030] = 0x30; // DIGIT ZERO
ADBSYMBOL_U2C[0x0031] = 0x31; // DIGIT ONE
ADBSYMBOL_U2C[0x0032] = 0x32; // DIGIT TWO
ADBSYMBOL_U2C[0x0033] = 0x33; // DIGIT THREE
ADBSYMBOL_U2C[0x0034] = 0x34; // DIGIT FOUR
ADBSYMBOL_U2C[0x0035] = 0x35; // DIGIT FIVE
ADBSYMBOL_U2C[0x0036] = 0x36; // DIGIT SIX
ADBSYMBOL_U2C[0x0037] = 0x37; // DIGIT SEVEN
ADBSYMBOL_U2C[0x0038] = 0x38; // DIGIT EIGHT
ADBSYMBOL_U2C[0x0039] = 0x39; // DIGIT NINE
ADBSYMBOL_U2C[0x003A] = 0x3A; // COLON
ADBSYMBOL_U2C[0x003B] = 0x3B; // SEMICOLON
ADBSYMBOL_U2C[0x003C] = 0x3C; // LESS-THAN SIGN
ADBSYMBOL_U2C[0x003D] = 0x3D; // EQUALS SIGN
ADBSYMBOL_U2C[0x003E] = 0x3E; // GREATER-THAN SIGN
ADBSYMBOL_U2C[0x003F] = 0x3F; // QUESTION MARK
ADBSYMBOL_U2C[0x2245] = 0x40; // APPROXIMATELY EQUAL TO
ADBSYMBOL_U2C[0x0391] = 0x41; // GREEK CAPITAL LETTER ALPHA
ADBSYMBOL_U2C[0x0392] = 0x42; // GREEK CAPITAL LETTER BETA
ADBSYMBOL_U2C[0x03A7] = 0x43; // GREEK CAPITAL LETTER CHI
ADBSYMBOL_U2C[0x0394] = 0x44; // GREEK CAPITAL LETTER DELTA
ADBSYMBOL_U2C[0x2206] = 0x44; // INCREMENT
ADBSYMBOL_U2C[0x0395] = 0x45; // GREEK CAPITAL LETTER EPSILON
ADBSYMBOL_U2C[0x03A6] = 0x46; // GREEK CAPITAL LETTER PHI
ADBSYMBOL_U2C[0x0393] = 0x47; // GREEK CAPITAL LETTER GAMMA
ADBSYMBOL_U2C[0x0397] = 0x48; // GREEK CAPITAL LETTER ETA
ADBSYMBOL_U2C[0x0399] = 0x49; // GREEK CAPITAL LETTER IOTA
ADBSYMBOL_U2C[0x03D1] = 0x4A; // GREEK THETA SYMBOL
ADBSYMBOL_U2C[0x039A] = 0x4B; // GREEK CAPITAL LETTER KAPPA
ADBSYMBOL_U2C[0x039B] = 0x4C; // GREEK CAPITAL LETTER LAMDA
ADBSYMBOL_U2C[0x039C] = 0x4D; // GREEK CAPITAL LETTER MU
ADBSYMBOL_U2C[0x039D] = 0x4E; // GREEK CAPITAL LETTER NU
ADBSYMBOL_U2C[0x039F] = 0x4F; // GREEK CAPITAL LETTER OMICRON
ADBSYMBOL_U2C[0x03A0] = 0x50; // GREEK CAPITAL LETTER PI
ADBSYMBOL_U2C[0x0398] = 0x51; // GREEK CAPITAL LETTER THETA
ADBSYMBOL_U2C[0x03A1] = 0x52; // GREEK CAPITAL LETTER RHO
ADBSYMBOL_U2C[0x03A3] = 0x53; // GREEK CAPITAL LETTER SIGMA
ADBSYMBOL_U2C[0x03A4] = 0x54; // GREEK CAPITAL LETTER TAU
ADBSYMBOL_U2C[0x03A5] = 0x55; // GREEK CAPITAL LETTER UPSILON
ADBSYMBOL_U2C[0x03C2] = 0x56; // GREEK SMALL LETTER FINAL SIGMA
ADBSYMBOL_U2C[0x03A9] = 0x57; // GREEK CAPITAL LETTER OMEGA
ADBSYMBOL_U2C[0x2126] = 0x57; // OHM SIGN
ADBSYMBOL_U2C[0x039E] = 0x58; // GREEK CAPITAL LETTER XI
ADBSYMBOL_U2C[0x03A8] = 0x59; // GREEK CAPITAL LETTER PSI
ADBSYMBOL_U2C[0x0396] = 0x5A; // GREEK CAPITAL LETTER ZETA
ADBSYMBOL_U2C[0x005B] = 0x5B; // LEFT SQUARE BRACKET
ADBSYMBOL_U2C[0x2234] = 0x5C; // THEREFORE
ADBSYMBOL_U2C[0x005D] = 0x5D; // RIGHT SQUARE BRACKET
ADBSYMBOL_U2C[0x22A5] = 0x5E; // UP TACK
ADBSYMBOL_U2C[0x005F] = 0x5F; // LOW LINE
ADBSYMBOL_U2C[0xF8E5] = 0x60; // RADICAL EXTENDER
ADBSYMBOL_U2C[0x03B1] = 0x61; // GREEK SMALL LETTER ALPHA
ADBSYMBOL_U2C[0x03B2] = 0x62; // GREEK SMALL LETTER BETA
ADBSYMBOL_U2C[0x03C7] = 0x63; // GREEK SMALL LETTER CHI
ADBSYMBOL_U2C[0x03B4] = 0x64; // GREEK SMALL LETTER DELTA
ADBSYMBOL_U2C[0x03B5] = 0x65; // GREEK SMALL LETTER EPSILON
ADBSYMBOL_U2C[0x03C6] = 0x66; // GREEK SMALL LETTER PHI
ADBSYMBOL_U2C[0x03B3] = 0x67; // GREEK SMALL LETTER GAMMA
ADBSYMBOL_U2C[0x03B7] = 0x68; // GREEK SMALL LETTER ETA
ADBSYMBOL_U2C[0x03B9] = 0x69; // GREEK SMALL LETTER IOTA
ADBSYMBOL_U2C[0x03D5] = 0x6A; // GREEK PHI SYMBOL
ADBSYMBOL_U2C[0x03BA] = 0x6B; // GREEK SMALL LETTER KAPPA
ADBSYMBOL_U2C[0x03BB] = 0x6C; // GREEK SMALL LETTER LAMDA
ADBSYMBOL_U2C[0x00B5] = 0x6D; // MICRO SIGN
ADBSYMBOL_U2C[0x03BC] = 0x6D; // GREEK SMALL LETTER MU
ADBSYMBOL_U2C[0x03BD] = 0x6E; // GREEK SMALL LETTER NU
ADBSYMBOL_U2C[0x03BF] = 0x6F; // GREEK SMALL LETTER OMICRON
ADBSYMBOL_U2C[0x03C0] = 0x70; // GREEK SMALL LETTER PI
ADBSYMBOL_U2C[0x03B8] = 0x71; // GREEK SMALL LETTER THETA
ADBSYMBOL_U2C[0x03C1] = 0x72; // GREEK SMALL LETTER RHO
ADBSYMBOL_U2C[0x03C3] = 0x73; // GREEK SMALL LETTER SIGMA
ADBSYMBOL_U2C[0x03C4] = 0x74; // GREEK SMALL LETTER TAU
ADBSYMBOL_U2C[0x03C5] = 0x75; // GREEK SMALL LETTER UPSILON
ADBSYMBOL_U2C[0x03D6] = 0x76; // GREEK PI SYMBOL
ADBSYMBOL_U2C[0x03C9] = 0x77; // GREEK SMALL LETTER OMEGA
ADBSYMBOL_U2C[0x03BE] = 0x78; // GREEK SMALL LETTER XI
ADBSYMBOL_U2C[0x03C8] = 0x79; // GREEK SMALL LETTER PSI
ADBSYMBOL_U2C[0x03B6] = 0x7A; // GREEK SMALL LETTER ZETA
ADBSYMBOL_U2C[0x007B] = 0x7B; // LEFT CURLY BRACKET
ADBSYMBOL_U2C[0x007C] = 0x7C; // VERTICAL LINE
ADBSYMBOL_U2C[0x007D] = 0x7D; // RIGHT CURLY BRACKET
ADBSYMBOL_U2C[0x223C] = 0x7E; // TILDE OPERATOR
ADBSYMBOL_U2C[0x20AC] = 0xA0; // EURO SIGN
ADBSYMBOL_U2C[0x03D2] = 0xA1; // GREEK UPSILON WITH HOOK SYMBOL
ADBSYMBOL_U2C[0x2032] = 0xA2; // PRIME
ADBSYMBOL_U2C[0x2264] = 0xA3; // LESS-THAN OR EQUAL TO
ADBSYMBOL_U2C[0x2044] = 0xA4; // FRACTION SLASH
ADBSYMBOL_U2C[0x2215] = 0xA4; // DIVISION SLASH
ADBSYMBOL_U2C[0x221E] = 0xA5; // INFINITY
ADBSYMBOL_U2C[0x0192] = 0xA6; // LATIN SMALL LETTER F WITH HOOK
ADBSYMBOL_U2C[0x2663] = 0xA7; // BLACK CLUB SUIT
ADBSYMBOL_U2C[0x2666] = 0xA8; // BLACK DIAMOND SUIT
ADBSYMBOL_U2C[0x2665] = 0xA9; // BLACK HEART SUIT
ADBSYMBOL_U2C[0x2660] = 0xAA; // BLACK SPADE SUIT
ADBSYMBOL_U2C[0x2194] = 0xAB; // LEFT RIGHT ARROW
ADBSYMBOL_U2C[0x2190] = 0xAC; // LEFTWARDS ARROW
ADBSYMBOL_U2C[0x2191] = 0xAD; // UPWARDS ARROW
ADBSYMBOL_U2C[0x2192] = 0xAE; // RIGHTWARDS ARROW
ADBSYMBOL_U2C[0x2193] = 0xAF; // DOWNWARDS ARROW
ADBSYMBOL_U2C[0x00B0] = 0xB0; // DEGREE SIGN
ADBSYMBOL_U2C[0x00B1] = 0xB1; // PLUS-MINUS SIGN
ADBSYMBOL_U2C[0x2033] = 0xB2; // DOUBLE PRIME
ADBSYMBOL_U2C[0x2265] = 0xB3; // GREATER-THAN OR EQUAL TO
ADBSYMBOL_U2C[0x00D7] = 0xB4; // MULTIPLICATION SIGN
ADBSYMBOL_U2C[0x221D] = 0xB5; // PROPORTIONAL TO
ADBSYMBOL_U2C[0x2202] = 0xB6; // PARTIAL DIFFERENTIAL
ADBSYMBOL_U2C[0x2022] = 0xB7; // BULLET
ADBSYMBOL_U2C[0x00F7] = 0xB8; // DIVISION SIGN
ADBSYMBOL_U2C[0x2260] = 0xB9; // NOT EQUAL TO
ADBSYMBOL_U2C[0x2261] = 0xBA; // IDENTICAL TO
ADBSYMBOL_U2C[0x2248] = 0xBB; // ALMOST EQUAL TO
ADBSYMBOL_U2C[0x2026] = 0xBC; // HORIZONTAL ELLIPSIS
ADBSYMBOL_U2C[0xF8E6] = 0xBD; // VERTICAL ARROW EXTENDER
ADBSYMBOL_U2C[0xF8E7] = 0xBE; // HORIZONTAL ARROW EXTENDER
ADBSYMBOL_U2C[0x21B5] = 0xBF; // DOWNWARDS ARROW WITH CORNER LEFTWARDS
ADBSYMBOL_U2C[0x2135] = 0xC0; // ALEF SYMBOL
ADBSYMBOL_U2C[0x2111] = 0xC1; // BLACK-LETTER CAPITAL I
ADBSYMBOL_U2C[0x211C] = 0xC2; // BLACK-LETTER CAPITAL R
ADBSYMBOL_U2C[0x2118] = 0xC3; // SCRIPT CAPITAL P
ADBSYMBOL_U2C[0x2297] = 0xC4; // CIRCLED TIMES
ADBSYMBOL_U2C[0x2295] = 0xC5; // CIRCLED PLUS
ADBSYMBOL_U2C[0x2205] = 0xC6; // EMPTY SET
ADBSYMBOL_U2C[0x2229] = 0xC7; // INTERSECTION
ADBSYMBOL_U2C[0x222A] = 0xC8; // UNION
ADBSYMBOL_U2C[0x2283] = 0xC9; // SUPERSET OF
ADBSYMBOL_U2C[0x2287] = 0xCA; // SUPERSET OF OR EQUAL TO
ADBSYMBOL_U2C[0x2284] = 0xCB; // NOT A SUBSET OF
ADBSYMBOL_U2C[0x2282] = 0xCC; // SUBSET OF
ADBSYMBOL_U2C[0x2286] = 0xCD; // SUBSET OF OR EQUAL TO
ADBSYMBOL_U2C[0x2208] = 0xCE; // ELEMENT OF
ADBSYMBOL_U2C[0x2209] = 0xCF; // NOT AN ELEMENT OF
ADBSYMBOL_U2C[0x2220] = 0xD0; // ANGLE
ADBSYMBOL_U2C[0x2207] = 0xD1; // NABLA
ADBSYMBOL_U2C[0xF6DA] = 0xD2; // REGISTERED SIGN SERIF
ADBSYMBOL_U2C[0xF6D9] = 0xD3; // COPYRIGHT SIGN SERIF
ADBSYMBOL_U2C[0xF6DB] = 0xD4; // TRADE MARK SIGN SERIF
ADBSYMBOL_U2C[0x220F] = 0xD5; // N-ARY PRODUCT
ADBSYMBOL_U2C[0x221A] = 0xD6; // SQUARE ROOT
ADBSYMBOL_U2C[0x22C5] = 0xD7; // DOT OPERATOR
ADBSYMBOL_U2C[0x00AC] = 0xD8; // NOT SIGN
ADBSYMBOL_U2C[0x2227] = 0xD9; // LOGICAL AND
ADBSYMBOL_U2C[0x2228] = 0xDA; // LOGICAL OR
ADBSYMBOL_U2C[0x21D4] = 0xDB; // LEFT RIGHT DOUBLE ARROW
ADBSYMBOL_U2C[0x21D0] = 0xDC; // LEFTWARDS DOUBLE ARROW
ADBSYMBOL_U2C[0x21D1] = 0xDD; // UPWARDS DOUBLE ARROW
ADBSYMBOL_U2C[0x21D2] = 0xDE; // RIGHTWARDS DOUBLE ARROW
ADBSYMBOL_U2C[0x21D3] = 0xDF; // DOWNWARDS DOUBLE ARROW
ADBSYMBOL_U2C[0x25CA] = 0xE0; // LOZENGE
ADBSYMBOL_U2C[0x2329] = 0xE1; // LEFT-POINTING ANGLE BRACKET
ADBSYMBOL_U2C[0xF8E8] = 0xE2; // REGISTERED SIGN SANS SERIF
ADBSYMBOL_U2C[0xF8E9] = 0xE3; // COPYRIGHT SIGN SANS SERIF
ADBSYMBOL_U2C[0xF8EA] = 0xE4; // TRADE MARK SIGN SANS SERIF
ADBSYMBOL_U2C[0x2211] = 0xE5; // N-ARY SUMMATION
ADBSYMBOL_U2C[0xF8EB] = 0xE6; // LEFT PAREN TOP
ADBSYMBOL_U2C[0xF8EC] = 0xE7; // LEFT PAREN EXTENDER
ADBSYMBOL_U2C[0xF8ED] = 0xE8; // LEFT PAREN BOTTOM
ADBSYMBOL_U2C[0xF8EE] = 0xE9; // LEFT SQUARE BRACKET TOP
ADBSYMBOL_U2C[0xF8EF] = 0xEA; // LEFT SQUARE BRACKET EXTENDER
ADBSYMBOL_U2C[0xF8F0] = 0xEB; // LEFT SQUARE BRACKET BOTTOM
ADBSYMBOL_U2C[0xF8F1] = 0xEC; // LEFT CURLY BRACKET TOP
ADBSYMBOL_U2C[0xF8F2] = 0xED; // LEFT CURLY BRACKET MID
ADBSYMBOL_U2C[0xF8F3] = 0xEE; // LEFT CURLY BRACKET BOTTOM
ADBSYMBOL_U2C[0xF8F4] = 0xEF; // CURLY BRACKET EXTENDER
ADBSYMBOL_U2C[0x232A] = 0xF1; // RIGHT-POINTING ANGLE BRACKET
ADBSYMBOL_U2C[0x222B] = 0xF2; // INTEGRAL
ADBSYMBOL_U2C[0x2320] = 0xF3; // TOP HALF INTEGRAL
ADBSYMBOL_U2C[0xF8F5] = 0xF4; // INTEGRAL EXTENDER
ADBSYMBOL_U2C[0x2321] = 0xF5; // BOTTOM HALF INTEGRAL
ADBSYMBOL_U2C[0xF8F6] = 0xF6; // RIGHT PAREN TOP
ADBSYMBOL_U2C[0xF8F7] = 0xF7; // RIGHT PAREN EXTENDER
ADBSYMBOL_U2C[0xF8F8] = 0xF8; // RIGHT PAREN BOTTOM
ADBSYMBOL_U2C[0xF8F9] = 0xF9; // RIGHT SQUARE BRACKET TOP
ADBSYMBOL_U2C[0xF8FA] = 0xFA; // RIGHT SQUARE BRACKET EXTENDER
ADBSYMBOL_U2C[0xF8FB] = 0xFB; // RIGHT SQUARE BRACKET BOTTOM
ADBSYMBOL_U2C[0xF8FC] = 0xFC; // RIGHT CURLY BRACKET TOP
ADBSYMBOL_U2C[0xF8FD] = 0xFD; // RIGHT CURLY BRACKET MID
ADBSYMBOL_U2C[0xF8FE] = 0xFE; // RIGHT CURLY BRACKET BOTTOM
}
@Override
public int encode(final int codepoint) {
return (codepoint >= 0 && codepoint < 0xffff) ? ADBSYMBOL_U2C[codepoint] : codepoint;
}
@Override
public String encode(final String s) {
final char[] encodedChars = new char[s.length()];
for (int i = 0; i < s.length(); i++) {
final char c = s.charAt(i);
encodedChars[i] = (c >= 0 && c < 0xffff) ? ADBSYMBOL_U2C[c] : c;
}
return new String(encodedChars);
}
}