﻿#--------------------------------------------------------------------
# Copyright (c) 1999-2001, International Business Machines
# Corporation and others. All Rights Reserved.
#--------------------------------------------------------------------
# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Hebrew_Latin.txt,v $
# $Date: 2004/05/06 23:03:43 $
# $Revision: 1.5 $
#--------------------------------------------------------------------

# Transliteration table for Hebrew
# Based on the UNGEGN table at:
#   http://www.eki.ee/wgrs/rom1_he.pdf
#
# Exceptions:
# - Accents are added to disambiguate letters
# - Combinations of dagesh, shin/sin dot that produce different
#   letters are not yet encoded.
#
# To test, open:
#   http://oss.software.ibm.com/cgi-bin/icu/tr
# Click Edit, paste in this file, Save As hebrew-latin/XXX
# (where XXX is a username)
# Now go back to the main window, and try it out.
# Use hebrew-latin/XXX for Output 1, and (Inverse) for Output 2
# Paste in hebrew text in Input, and hit Transliterate.
#
# For more information, see"
#   http://oss.software.ibm.com/icu/userguide/Transliteration.html

:: [[:Hebrew:] [\u05B0-\u05B9\u05BB-\u05BC\u05C1-\u05C2\u2135-\u2138̄\u05BF] - [\u05BD]] ;
:: nfkd (nfc) ;
$letterAfter = [:M:]* [:L:] ;

# move longer items here to avoid masking

ח <> ẖ ;
צ <> ẕ } $letterAfter;
ץ <> ẕ ;
ש <> ş ;
ת <> ţ ;

א <> ʼ ;
ב <> b ;
ג <> g ;
ד <> d ;
ה <> h ;
ו <> w ;
ז <> z ;
ט <> t ;
י <> y ;
כ <> k } $letterAfter;
ך <> k ;
ל <> l ;
מ <> m } $letterAfter;
ם <> m ; 
נ <> n  } $letterAfter;
ן <> n ;
ס <> s ;
ע <> ʻ ;
פ <> p } $letterAfter;
ף <> p ;
ק <> q ;
ר <> r ;

 װ > |  וו; # HEBREW LIGATURE YIDDISH DOUBLE VAV
 ױ > | וי; # HEBREW LIGATURE YIDDISH VAV YOD
 ײ > | יי ; # HEBREW LIGATURE YIDDISH DOUBLE YOD


ּ <> ̇ ; # dagesh just goes to overdot for now
ׁ <> ̌ ; # shin dot -> sh
ׂ <> ̂ ; # sin dot -> s

# points
ֲ <> à ;
ָ <> á ;
ֱ <> è ;
ֵ <> é ;
ְ <> ê ;
ִ <> i ;
ֹ <> ò ;
ֻ <> u ;

ַ <> a ;
ֶ <> e ;
ֳ <> o ;

\u05BF <>   ̄ ;

# fallbacks
ק < c ;
פ < f } $letterAfter;
ף < f ;
ז < j ;
ו < v ;
כס < x ;

:: (lower);
:: nfc (nfd) ;
:: ([[:Latin:] [\u02BB-\u02BC\u0300-\u0302\u0307\u030C\u0327\u0331\u0340-\u0341    ̄ ]]);