﻿#--------------------------------------------------------------------
# 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_Greek_Latin_UNGEGN.txt,v $
# $Date: 2002/07/26 16:09:04 $
# $Revision: 1.2 $
#--------------------------------------------------------------------
# For modern Greek, based on UNGEGN rules.

# Rules are predicated on running NFD first, and NFC afterwards
# MINIMAL FILTER GENERATED FOR: Greek-Latin/UNGEGN
# WARNING: need to add accents to both filters ###
# :: [́̄̆̈;µ·ÀÂÈÊÌÎÒÔÙÛàâèêìîòôùûĈ-ĉĜ-ĝĤ-ĥĴ-ĵŜ-ŝŴ-ŷǛ-ǜǸ-ǹ̀̂̓-̔̀͂-̓ͅͺ;Ά-ΊΌΎ-ΡΣ-ώϐ-ϖϰ-ϵЀЍѐѝḔ-ḕṐ-ṑẀ-ẁẐ-ẑẤ-ậẰ-ằẾ-ệỐ-ộỜ-ờỪ-ừỲ-ỳἀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼι῁-ῄῆ-῍῏-ΐῖ-Ί῝῟-῭ῲ-ῴῶ-ῼΩ] ;

:: [[[:Greek:][:Mn:][:Me:]] [\:-;?\u00B7\u037E\u0387]] ;
::NFD (NFC) ;

# Useful variables

$lower = [[:latin:][:greek:] & [:Ll:]] ;
$upper = [[:latin:][:greek:] & [:Lu:]] ;
$accent = [[:Mn:][:Me:]] ;

$macron = ̄ ;
$ddot = ̈ ;

$lcgvowel = [αεηιουω] ;
$ucgvowel = [ΑΕΗΙΟΥΩ] ;
$gvowel = [$lcgvowel $ucgvowel] ;
$lcgvowelC = [$lcgvowel $accent] ;

$evowel = [aeiouyAEIOUY];
$vowel = [ $evowel $gvowel] ;

$beforeLower = $accent * $lower ;

$gammaLike = [ΓΚΞΧγκξχϰ] ;
$egammaLike = [GKXCgkxc] ;
$smooth = ̓ ;
$rough = ̔ ;
$iotasub = ͅ ;

$softener = [βΒγΓδΔζΖλΛμΜνΝρΡ$gvowel] ;

$under = ̱;

$caron = ̌;

$afterLetter = [:L:] [\'$accent]* ;
$beforeLetter = [\'$accent]* [:L:] ;

# Fix punctuation

# preserve orginal
\: <> \: $under ;
\? <> \? $under ;

\; <> \? ;
· <> \: ;

# Fix any ancient characters that creep in

͂ > ́ ;
̂ > ́ ;
̀ > ́ ;
$smooth > ;
$rough > ;
$iotasub > ;
ͺ > ;

# need to have these up here so the rules don't mask

η <> i $under ;
Η <> I $under ;

Ψ } $beforeLower <> Ps ;
Ψ <> PS ;
ψ <> ps ;

ω <> o $under ;
Ω <>  O $under;

# at begining or end of word, convert mp to b

[^[:L:]$accent] { μπ > b ;
μπ } [^[:L:]$accent] > b ;
[^[:L:]$accent] { [Μμ][Ππ] > B ;
[Μμ][Ππ] } [^[:L:]$accent] > B ;

μπ < b ;
Μπ < B } $beforeLower ;
ΜΠ < B ;

# handle diphthongs ending with upsilon

ου <> ou ;
ΟΥ <> OU ;
Ου <> Ou ;
οΥ <> oU ;

$fmaker = [aeiAEI] $under ? ;
$shiftForwardVowels = [[:Mn:]-[\u0308]]; # note: a diaeresis keeps the items separate

$fmaker { υ ( $shiftForwardVowels )* } $softener > $1 v $under ;
υ $1 < ( $shiftForwardVowels )* v $under ;

$fmaker { υ ( $shiftForwardVowels )* } > $1 f $under;
υ $1 < ( $shiftForwardVowels )* f $under ;

$fmaker { Υ } $softener <> V $under ;
$fmaker { Υ <> U $under ;

υ <> y ;
Υ <> Y ;

# NORMAL

α <> a ;
Α <> A ;

β <> v ;
Β <> V ;

γ } $gammaLike <> n } $egammaLike ;
γ <> g ;
Γ } $gammaLike <> N } $egammaLike ;
Γ <> G ;

δ <> d ;
Δ <> D ;

ε <> e ;
Ε <> E ;

ζ <> z ;
Ζ <> Z ;

θ <> th ;
Θ } $beforeLower <> Th ;
Θ <> TH ;

ι <> i ;
Ι <> I ;

κ <> k ;
Κ <> K ;

λ <> l ;
Λ <> L ;

μ <> m ;
Μ <> M ;

ν } $gammaLike > n\' ;
ν <> n ;
Ν } $gammaLike <> N\' ;
Ν <> N ;

ξ <> x ;
Ξ <> X ;

ο <> o ;
Ο <> O ;

π <> p ;
Π <> P ;

ρ <> r ;
Ρ <> R ;

[Pp] { } ς > \' ;
[Pp] { } σ > \' ;

# Caron means exception

# before a letter, initial
ς } $beforeLetter <> s $under } $beforeLetter;
σ } $beforeLetter <> s } $beforeLetter;

# otherwise, after a letter = final
$afterLetter { σ <> $afterLetter { s $under;
$afterLetter { ς <> $afterLetter { s ;

# otherwise (isolated) = initial
ς <> s $under;
σ <> s ;

[Pp] { Σ <> \'S ;
Σ <> S ;

τ <> t ;
Τ <> T ;

φ <> f ;
Φ <> F ;

χ <> ch ;
Χ } $beforeLower <> Ch ;
Χ <> CH ;

# Completeness for ASCII

# $ignore = [[:Mark:]''] * ;

| ch < h ;
| k  < c ;
| i  < j ;
| k < q ;
| b < u } $vowel ;
| b < w } $vowel ;
| y < u ;
| y < w ;

| Ch < H ;
| K < C ;
| I < J ;
| K < Q ;
| B < W } $vowel ;
| B < U } $vowel ;
| Y < W ;
| Y < U ;

# Completeness for Greek

ϐ > | β ;
ϑ > | θ ;
ϒ > | Υ ;
ϕ > | φ ;
ϖ > | π ;

ϰ > | κ ;
ϱ > | ρ ;
ϲ > | σ ;
ϳ > j ;
ϴ > | Θ ;
ϵ > | ε ;
µ > | μ ;

# delete any trailing ' marks used for roundtripping

 < [Ππ] { \' } [Ss] ;
 < [Νν] { \' } $egammaLike ;

::NFC (NFD) ;

# MINIMAL FILTER GENERATED FOR: Latin-Greek/UNGEGN BACKWARD
:: ([[[:Latin:][:Mn:][:Me:]] ['\:?]]) ;
