#--------------------------------------------------------------------
# Copyright (c) 1999-2004, International Business Machines
# Corporation and others. All Rights Reserved.
#--------------------------------------------------------------------

# InterIndic-Telugu
#:: NFD (NFC) ;
\ue001>\u0c01; # SIGN CANDRABINDU
\ue002>\u0c02; # SIGN ANUSVARA
\ue003>\u0c03; # SIGN VISARGA
\uE004>\u0c05; # FALLBACK TO LETTER A
\ue005>\u0c05; # LETTER A
\ue006>\u0c06; # LETTER AA
\ue007>\u0c07; # LETTER I
\ue008>\u0c08; # LETTER II
\ue009>\u0c09; # LETTER U
\ue00a>\u0c0a; # LETTER UU
\ue00b>\u0c0b; # LETTER VOCALIC R
\ue00c>\u0c0c; # LETTER VOCALIC L
\ue00d>\u0c0E; # FALLBACK MAPPING
\ue00e>\u0c0E; # LETTER E
\ue00f>\u0c0f; # LETTER EE
\ue010>\u0c10; # LETTER AI
\ue011>\u0c12; # FALBACK MAPPING
\ue012>\u0c12; # LETTER O
\ue013>\u0c13; # LETTER OO
\ue014>\u0c14; # LETTER AU
\ue015>\u0c15; # LETTER KA
\ue016>\u0c16; # LETTER KHA
\ue017>\u0c17; # LETTER GA
\ue018>\u0c18; # LETTER GHA
\ue019>\u0c19; # LETTER NGA
\ue01a>\u0c1a; # LETTER CA
\ue01b>\u0c1b; # LETTER CHA
\ue01c>\u0c1c; # LETTER JA
\ue01d>\u0c1d; # LETTER JHA
\ue01e>\u0c1e; # LETTER NYA
\ue01f>\u0c1f; # LETTER TTA
\ue020>\u0c20; # LETTER TTHA
\ue021>\u0c21; # LETTER DDA
\ue022>\u0c22; # LETTER DDHA
\ue023>\u0c23; # LETTER NNA
\ue024>\u0c24; # LETTER TA
\ue025>\u0c25; # LETTER THA
\ue026>\u0c26; # LETTER DA
\ue027>\u0c27; # LETTER DHA
\ue028>\u0c28; # LETTER NA
\ue029>\u0c28; # REMAP (indicExceptions.txt): \u0c29>\u0c28 = LETTER NNNA>LETTER NA
\ue02a>\u0c2a; # LETTER PA
\ue02b>\u0c2b; # LETTER PHA
\ue02c>\u0c2c; # LETTER BA
\ue02d>\u0c2d; # LETTER BHA
\ue02e>\u0c2e; # LETTER MA
\ue02f>\u0c2f; # LETTER YA
\ue030\ue03c>\u0c31;
\ue030>\u0c30; # LETTER RA
\ue031>\u0c31; # LETTER RRA
\ue032>\u0c32; # LETTER LA
\ue033>\u0c33; # LETTER LLA
\ue034>\u0c33; # REMAP (indicExceptions.txt): \u0c34>\u0c33 = LETTER LLLA>LETTER LLA
\ue035>\u0c35; # LETTER VA
\ue036>\u0c36; # LETTER SHA
\ue037>\u0c37; # LETTER SSA
\ue038>\u0c38; # LETTER SA
\ue039>\u0c39; # LETTER HA

\ue03c>; # FALLBACK BLOW AWAY NUKTA
\ue03d>; # FALLBACK BLOW AWAY AVAGRAHA

\ue03e>\u0c3e; # VOWEL SIGN AA
\ue03f>\u0c3f; # VOWEL SIGN I
\ue040>\u0c40; # VOWEL SIGN II
\ue041>\u0c41; # VOWEL SIGN U
\ue042>\u0c42; # VOWEL SIGN UU
\ue043>\u0c43; # VOWEL SIGN VOCALIC R
\ue044>\u0c44; # VOWEL SIGN VOCALIC RR
\ue045>\u0c46; # VOWEL SIGN CANDRA E>VOWEL SIGN E
\ue046>\u0c46; # VOWEL SIGN E
\ue047>\u0c47; # VOWEL SIGN EE
\ue048>\u0c48; # VOWEL SIGN AI
\ue049>\u0c4a; # REMAP (indicExceptions.txt): \u0c49>\u0c4a = VOWEL SIGN CANDRA O>VOWEL SIGN O
\ue04a>\u0c4a; # VOWEL SIGN O
\ue04b>\u0c4b; # VOWEL SIGN OO
\ue04c>\u0c4c; # VOWEL SIGN AU
\ue04d>\u0c4d; # SIGN VIRAMA
\ue050>\u0c13\u0c02; # REMAP (indicExceptions.txt): \u0c50>\u0c13\u0c02 = OM>LETTER OO.SIGN ANUSVARA
\ue051>;
\ue052>;
\ue053>;
\ue054>;
\ue055>\u0c55; # LENGTH MARK
\ue056>\u0c56; # AI LENGTH MARK
\ue057>\u0c4c; # REMAP (indicExceptions.txt): \u0c57>\u0c4c = AU LENGTH MARK>VOWEL SIGN AU
\ue058>\u0c15; # REMAP
\ue059>\u0c16; # REMAP (indicExceptions.txt): \u0c59>\u0c16 = LETTER KHHA>LETTER KHA
\ue05a>\u0c17; # REMAP (indicExceptions.txt): \u0c5a>\u0c17 = LETTER GHHA>LETTER GA
\ue05b>\u0c1c; # REMAP (indicExceptions.txt): \u0c5b>\u0c1c = LETTER ZA>LETTER JA
\ue05c>\u0c22; # REMAP
\ue05d>\u0c22; # REMAP (indicExceptions.txt): \u0c5d>\u0c22 = LETTER RHA>LETTER DDHA
\ue05e>\u0c2b; # REMAP (indicExceptions.txt): \u0c5e>\u0c2b = LETTER FA>LETTER PHA
\ue05f>\u0c2f; # REMAP (indicExceptions.txt): \u0c5f>\u0c2f = LETTER YYA>LETTER YA
\ue060>\u0c60; # LETTER VOCALIC RR
\ue061>\u0c61; # LETTER VOCALIC LL
\ue062>\u0c3f; # REMAP (indicExceptions.txt): \u0c62>\u0c3f = VOWEL SIGN VOCALIC L>VOWEL SIGN I
\ue063>\u0c40; # REMAP (indicExceptions.txt): \u0c63>\u0c40 = VOWEL SIGN VOCALIC LL>VOWEL SIGN II
\ue064>'.'   ; # FALLBACK FOR DANDA
\ue065>'.'   ; # FALLBACK FOR DOUBLE DANDA      
\ue066>\u0c66; # DIGIT ZERO
\ue067>\u0c67; # DIGIT ONE
\ue068>\u0c68; # DIGIT TWO
\ue069>\u0c69; # DIGIT THREE
\ue06a>\u0c6a; # DIGIT FOUR
\ue06b>\u0c6b; # DIGIT FIVE
\ue06c>\u0c6c; # DIGIT SIX
\ue06d>\u0c6d; # DIGIT SEVEN
\ue06e>\u0c6e; # DIGIT EIGHT
\ue06f>\u0c6f; # DIGIT NINE

\ue070>;       # ABBREVIATION SIGN
\ue071>\u0c30; # LETTER RA WITH MIDDLE DIAGONAL
\ue072>\u0c30; # LETTER RA WITH LOWER DIAGONAL
\ue073>;       # RUPEE MARK
\ue074>;       # RUPEE SIGN
\ue075>;       # CURRENCY NUMERATOR ONE
\ue076>;       # CURRENCY NUMERATOR TWO
\ue077>;       # CURRENCY NUMERATOR THREE
\ue078>;       # CURRENCY NUMERATOR FOUR
\ue079>;       # CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
\ue07A>;       # CURRENCY DENOMINATOR SIXTEEN
\ue07B>;       # ISSHAR
\uE07C>;       # TIPPI
\uE07D>;       # ADDAK
\uE07E>;       # IRI
\uE07F>;       # URA
\uE080>;       # EK ONKAR
\uE081>\u0c35;  # FALLBACK FOR ORIYA LETTER WA 
0 > \u0c66;       # FALLBACK FOR TAMIL
1 > \u0c67;

#    :: NFC (NFD) ;
# eof
