//--------------------------------------------------------------------
// Copyright (c) 1999-2000, International Business Machines
// Corporation and others.  All Rights Reserved.
//--------------------------------------------------------------------
// THIS IS A MACHINE-GENERATED FILE
// Tool: src\com\ibm\tools\translit\dumpICUrules.bat
// Source: src\com\ibm\text\resources/TransliterationRule_Latin_Arabic.java
// Date: Wed Jul  5 16:11:18 2000
//--------------------------------------------------------------------

// Latin-Arabic

larabic {
  Rule {
    // To Do: finish adding shadda, add sokoon
    // [Is this done?  Can someone finish this?]
    
    "$alefmadda=\u0622;"
    "$alefuhamza=\u0623;"
    "$wauuhamza=\u0624;"
    "$alefhamza=\u0625;"
    "$yehuhamza=\u0626;"
    "$alef=\u0627;"
    "$beh=\u0628;"
    "$tehmarbuta=\u0629;"
    "$teh=\u062A;"
    "$theh=\u062B;"
    "$geem=\u062C;"
    "$hah=\u062D;"
    "$kha=\u062E;"
    "$dal=\u062F;"
    "$dhal=\u0630;"
    "$reh=\u0631;"
    "$zain=\u0632;"
    "$seen=\u0633;"
    "$sheen=\u0634;"
    "$sad=\u0635;"
    "$dad=\u0636;"
    "$tah=\u0637;"
    "$zah=\u0638;"
    "$ein=\u0639;"
    "$ghein=\u063A;"
    "$feh=\u0641;"
    "$qaaf=\u0642;"
    "$kaf=\u0643;"
    "$lam=\u0644;"
    "$meem=\u0645;"
    "$noon=\u0646;"
    "$heh=\u0647;"
    "$wau=\u0648;"
    "$yehmaqsura=\u0649;"
    "$yeh=\u064A;"
    "$peh=\u06A4;"
    
    "$hamza=\u0621;"
    "$fathatein=\u064B;"
    "$dammatein=\u064C;"
    "$kasratein=\u064D;"
    "$fatha=\u064E;"
    "$damma=\u064F;"
    "$kasra=\u0650;"
    "$shadda=\u0651;"
    "$sokoon=\u0652;"
    
    // Doubles - liu
    "t'' < {$teh} [$teh$theh$tehmarbuta$tah];"
    "h'' < {$heh} [$heh$hah];"
    "s'' < {$seen} $sheen;"
    
    // A few pathological special cases to make round
    // trip work. - liu
    "d'~'d   <> $dal $dal;"
    "dh'~'dh <> $dhal $dhal;"
    "dd'~'dd <> $dad $dad;"
    
    // Shadda:  Map x $shadda to x x, where x is dh, dd, or
    // d (that is, $dhal, $dad, or $dal).  If x is d, d'd is
    // output.  Net effect is to map s.th. like $dad $shadda
    // to dd'dd. - liu
    "$dhal {dh} <> dh {$shadda};"
    "$dad  {dd} <> dd {$shadda};"
    "$dal {''d} [^dh] <> d {$shadda};" // Avoid d'dd or d'dh
    
    // [This should be removed, but it's good for demos]
    "Arabic>"
    "\u062a\u062a\u0645\u062a\u0639' '"
    "\u0627\u0644\u0644\u063a\u0629' '"
    "\u0627\u0644\u0639\u0631\u0628\u0628\u064a\u0629' '"
    "\u0628\u0628\u0646\u0638\u0645' '"
    "\u0643\u062a\u0627\u0628\u0628\u064a\u0629' '"
    "\u062c\u0645\u064a\u0644\u0629;"
    
    // Main rules
    "''ai<a{$alefmadda;"
    "ai<>$alefmadda;"
    "''ae<a{$alefuhamza;"
    "ae<>$alefuhamza;"
    "''ao<a{$alefhamza;"
    "ao<>$alefhamza;"
    "''aa<a{$alef;"
    "aa<>$alef;"
    "''an<a{$fathatein;"
    "an<>$fathatein;"
    "''a<a{$fatha;"
    "a<>$fatha;"
    "b<>$beh;"
    "''dh<d{$dhal;"
    "dh<>$dhal;"
    "''dd<d{$dad;"
    "dd<>$dad;"
    "''d<d{$dal;"
    "d<>$dal;"
    "''e<a{$ein;"
    "''e<w{$ein;"
    "''e<y{$ein;"
    "e<>$ein;"
    "f<>$feh;"
    "gh<>$ghein;"
    "''hh<d{$hah;"
    "''hh<t{$hah;"
    "''hh<k{$hah;"
    "''hh<s{$hah;"
    "hh<>$hah;"
    "''h<d{$heh;"
    "''h<t{$heh;"
    "''h<k{$heh;"
    "''h<s{$heh;"
    "h<>$heh;"
    "''ii<i{$kasratein;"
    "ii<>$kasratein;"
    "''i<i{$kasra;"
    "i<>$kasra;"
    "j<>$geem;"
    "kh<>$kha;"
    "k<>$kaf;"
    "l<>$lam;"
    "''m<y{$meem;"
    "''m<t{$meem;"
    "m<>$meem;"
    "n<>$noon;"
    "''o<a{$hamza;"
    "o<>$hamza;"
    "p<>$peh;"
    "q<>$qaaf;"
    "r<>$reh;"
    "sh<>$sheen;"
    "''ss<s{$sad;"
    "ss<>$sad;"
    "''s<s{$seen;"
    "s<>$seen;"
    "th<>$theh;"
    "tm<>$tehmarbuta;"
    "''tt<t{$tah;"
    "tt<>$tah;"
    "''t<t{$teh;"
    "t<>$teh;"
    "''uu<u{$dammatein;"
    "uu<>$dammatein;"
    "''u<u{$damma;"
    "u<>$damma;"
    "we<>$wauuhamza;"
    "w<>$wau;"
    "ye<>$yehuhamza;"
    "ym<>$yehmaqsura;"
    "''y<y{$yeh;"
    "y<>$yeh;"
    "''zz<z{$zah;"
    "zz<>$zah;"
    "''z<z{$zain;"
    "z<>$zain;"
    
    // One-way Latin-Arabic compatability rules
    "c>$kaf;"
    "g>$geem;"
    "x>$kaf$shadda$seen;"
    "v>$beh;"
    
    // Digits
    "0<>\u0660;" // Arabic digit 0
    "1<>\u0661;" // Arabic digit 1
    "2<>\u0662;" // Arabic digit 2
    "3<>\u0663;" // Arabic digit 3
    "4<>\u0664;" // Arabic digit 4
    "5<>\u0665;" // Arabic digit 5
    "6<>\u0666;" // Arabic digit 6
    "7<>\u0667;" // Arabic digit 7
    "8<>\u0668;" // Arabic digit 8
    "9<>\u0669;" // Arabic digit 9
    "'%'<>\u066A;" // Arabic %
    "'.'<>\u066B;" // Arabic decimal separator
    "','<>\u066C;" // Arabic thousands separator
    "'*'<>\u066D;" // Arabic five-pointed star
    
    "''>;"
  }
}
