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

# InterIndic-Malayalam
#:: NFD (NFC) ;
\ue001>\u0d02; # REMAP (indicExceptions.txt): \u0d01>\u0d02 = SIGN CANDRABINDU>SIGN ANUSVARA
\ue002>\u0d02; # SIGN ANUSVARA
\ue003>\u0d03; # SIGN VISARGA
\uE004>\u0d05; # FALLBACK TO LETTER A
\ue005>\u0d05; # LETTER A
\ue006>\u0d06; # LETTER AA
\ue007>\u0d07; # LETTER I
\ue008>\u0d08; # LETTER II
\ue009>\u0d09; # LETTER U
\ue00a>\u0d0a; # LETTER UU
\ue00b>\u0d0b; # LETTER VOCALIC R
\ue00c>\u0d0c; # LETTER VOCALIC L
\ue00d>\u0d0e; # FALLLBACK LETTER E
\ue00e>\u0d0e; # LETTER E
\ue00f>\u0d0f; # LETTER EE
\ue010>\u0d10; # LETTER AI
\ue011>\u0d12; # FALLBACK TO O
\ue012>\u0d12; # LETTER O
\ue013>\u0d13; # LETTER OO
\ue014>\u0d14; # LETTER AU
\ue015>\u0d15; # LETTER KA
\ue016>\u0d16; # LETTER KHA
\ue017>\u0d17; # LETTER GA
\ue018>\u0d18; # LETTER GHA
\ue019>\u0d19; # LETTER NGA
\ue01a>\u0d1a; # LETTER CA
\ue01b>\u0d1b; # LETTER CHA
\ue01c>\u0d1c; # LETTER JA
\ue01d>\u0d1d; # LETTER JHA
\ue01e>\u0d1e; # LETTER NYA
\ue01f>\u0d1f; # LETTER TTA
\ue020>\u0d20; # LETTER TTHA
\ue021>\u0d21; # LETTER DDA
\ue022>\u0d22; # LETTER DDHA
\ue023>\u0d23; # LETTER NNA
\ue024>\u0d24; # LETTER TA
\ue025>\u0d25; # LETTER THA
\ue026>\u0d26; # LETTER DA
\ue027>\u0d27; # LETTER DHA
\ue028>\u0d28; # LETTER NA
\ue029>\u0d28; # REMAP (indicExceptions.txt): \u0d29>\u0d28 = LETTER NNNA>LETTER NA
\ue02a>\u0d2a; # LETTER PA
\ue02b>\u0d2b; # LETTER PHA
\ue02c>\u0d2c; # LETTER BA
\ue02d>\u0d2d; # LETTER BHA
\ue02e>\u0d2e; # LETTER MA
\ue02f>\u0d2f; # LETTER YA
\ue030\ue03c>\u0d31;
\ue030>\u0d30; # LETTER RA
\ue031>\u0d31; # LETTER RRA
\ue032>\u0d32; # LETTER LA
\ue033\ue03c>\u0d34;
\ue033>\u0d33; # LETTER LLA
\ue034>\u0d34; # LETTER LLLA
\ue035>\u0d35; # LETTER VA
\ue036>\u0d36; # LETTER SHA
\ue037>\u0d37; # LETTER SSA
\ue038>\u0d38; # LETTER SA
\ue039>\u0d39; # LETTER HA

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

\ue03e>\u0d3e; # VOWEL SIGN AA
\ue03f>\u0d3f; # VOWEL SIGN I
\ue040>\u0d40; # VOWEL SIGN II
\ue041>\u0d41; # VOWEL SIGN U
\ue042>\u0d42; # VOWEL SIGN UU
\ue043>\u0d43; # VOWEL SIGN VOCALIC R
\ue044>; # FALLBACK BLOW AWAY VOWEL SIGN VOCALIC RR
\ue045>\u0d3e; # REMAP (indicExceptions.txt): \u0d45>\u0d3e = VOWEL SIGN CANDRA E>VOWEL SIGN AA
\ue046>\u0d46; # VOWEL SIGN E
\ue047>\u0d47; # VOWEL SIGN EE
\ue048>\u0d48; # VOWEL SIGN AI
\ue049>\u0d4b; # REMAP (indicExceptions.txt): \u0d49>\u0d4b = VOWEL SIGN CANDRA O>VOWEL SIGN OO
\ue04a>\u0d4a; # VOWEL SIGN O
\ue04b>\u0d4b; # VOWEL SIGN OO
\ue04c>\u0d4c; # VOWEL SIGN AU
\ue04d>\u0d4d; # SIGN VIRAMA
\ue050>\u0d13\u0d02; # UNMAPPED InterIndic-Malayalam: OM
\ue051>;
\ue052>;
\ue053>;
\ue054>;
\ue055>; # FALLBACK BLOW AWAY LENGTH MARK
\ue056>\u0d48; # REMAP (indicExceptions.txt): \u0d56>\u0d48 = AI LENGTH MARK>VOWEL SIGN AI
\ue057>\u0d57; # AU LENGTH MARK
\ue058>\u0d15; # FALLBACK
\ue059>\u0d16; # REMAP (indicExceptions.txt): \u0d59>\u0d16 = LETTER KHHA>LETTER KHA
\ue05a>\u0d17; # REMAP (indicExceptions.txt): \u0d5a>\u0d17 = LETTER GHHA>LETTER GA
\ue05b>\u0d1c; # REMAP (indicExceptions.txt): \u0d5b>\u0d1c = LETTER ZA>LETTER JA
\ue05d>\u0d22; # REMAP (indicExceptions.txt): \u0d5d>\u0d22 = LETTER RHA>LETTER DDHA
\ue05c>\u0d21; # FALLBACK
\ue05e>\u0d2b; # REMAP (indicExceptions.txt): \u0d5e>\u0d2b = LETTER FA>LETTER PHA
\ue05f>\u0d2f; # REMAP (indicExceptions.txt): \u0d5f>\u0d2f = LETTER YYA>LETTER YA
\ue060>\u0d60; # LETTER VOCALIC RR
\ue061>\u0d61; # LETTER VOCALIC LL
\ue062>; # FALLBACK BLOW AWAY VOWEL SIGN VOCALIC L
\ue063>; # FALLBACK BLOW AWAY VOWEL SIGN VOCALIC LL
\ue064>'.'   ; # FALLBACK FOR DANDA
\ue065>'.'   ; # FALLBACK FOR DOUBLE DANDA      
\ue066>\u0d66; # DIGIT ZERO
\ue067>\u0d67; # DIGIT ONE
\ue068>\u0d68; # DIGIT TWO
\ue069>\u0d69; # DIGIT THREE
\ue06a>\u0d6a; # DIGIT FOUR
\ue06b>\u0d6b; # DIGIT FIVE
\ue06c>\u0d6c; # DIGIT SIX
\ue06d>\u0d6d; # DIGIT SEVEN
\ue06e>\u0d6e; # DIGIT EIGHT
\ue06f>\u0d6f; # DIGIT NINE
\ue070>;       # ABBREVIATION SIGN
\ue071>\u0d30; # LETTER RA WITH MIDDLE DIAGONAL
\ue072>\u0d30; # 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>\u0d35; # FALLBACK FOR ORIYA LETTER WA 
\uE082>;       # Devanagari Glottal Stop
\uE083>\u0d24\u0d4d;  # Bengali Khanda-ta
0 > \u0d66;    # FALLBACK FOR TAMIL
1 > \u0d67;

#    :: NFC (NFD) ;
# eof
