1 # ***************************************************************************
3 # * Copyright (C) 2004-2016, International Business Machines
4 # * Corporation; Unicode, Inc.; and others. All Rights Reserved.
6 # ***************************************************************************
7 # File: Grek_Latn_UNGEGN.txt
11 # For modern Greek, based on UNGEGN rules.
12 # Rules are predicated on running NFD first, and NFC afterwards
13 # MINIMAL FILTER GENERATED FOR: Greek-Latin/UNGEGN
14 # WARNING: need to add accents to both filters ###
15 # :: [\u0301\u0304\u0306\u0308;µ·ÀÂÈÊÌÎÒÔÙÛàâèêìîòôùûĈ-ĉĜ-ĝĤ-ĥĴ-ĵŜ-ŝŴ-ŷǛ-ǜǸ-ǹ\u0300\u0302\u0313-\u0314\u0340\u0342-\u0343\u0345ͺ;Ά-ΊΌΎ-ΡΣ-ώϐ-ϖϰ-ϵЀЍѐѝḔ-ḕṐ-ṑẀ-ẁẐ-ẑẤ-ậẰ-ằẾ-ệỐ-ộỜ-ờỪ-ừỲ-ỳἀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼι῁-ῄῆ-῍῏-ΐῖ-Ί῝῟-῭ῲ-ῴῶ-ῼΩϷ-\u07FBϹ] ;
16 :: [[[:Greek:][:Mn:][:Me:]] [\:-;?·;·]] ;
19 $lower = [[:latin:][:greek:] & [:Ll:]] ;
20 $upper = [[:latin:][:greek:] & [:Lu:]] ;
21 $accent = [[:Mn:][:Me:]] ;
24 $lcgvowel = [αεηιουω] ;
25 $ucgvowel = [ΑΕΗΙΟΥΩ] ;
26 $gvowel = [$lcgvowel $ucgvowel] ;
27 $lcgvowelC = [$lcgvowel $accent] ;
28 $evowel = [aeiouyAEIOUY];
29 $vowel = [ $evowel $gvowel] ;
30 $beforeLower = $accent * $lower ;
31 $gammaLike = [ΓΚΞΧγκξχϰ] ;
32 $egammaLike = [GKXCgkxc] ;
36 $softener = [βΒγΓδΔζΖλΛμΜνΝρΡ$gvowel] ;
39 $afterLetter = [:L:] [\'$accent]* ;
40 $beforeLetter = [\'$accent]* [:L:] ;
47 # Fix any ancient characters that creep in
55 # need to have these up here so the rules don't mask
58 Ψ } $beforeLower ↔ Ps ;
63 # at begining or end of word, convert mp to b
64 [^[:L:]$accent] { μπ → b ;
65 μπ } [^[:L:]$accent] → b ;
66 [^[:L:]$accent] { [Μμ][Ππ] → B ;
67 [Μμ][Ππ] } [^[:L:]$accent] → B ;
69 Μπ ← B } $beforeLower ;
71 # handle diphthongs ending with upsilon
76 $fmaker = [aeiAEI] $under ? ;
77 $shiftForwardVowels = [[:Mn:]-[\u0308]]; # note: a diaeresis keeps the items separate
78 $fmaker { υ ( $shiftForwardVowels )* } $softener → $1 v $under ;
79 υ $1 ← ( $shiftForwardVowels )* v $under ;
80 $fmaker { υ ( $shiftForwardVowels )* } → $1 f $under;
81 υ $1 ← ( $shiftForwardVowels )* f $under ;
82 $fmaker { Υ } $softener ↔ V $under ;
83 $fmaker { Υ ↔ U $under ;
91 γ } $gammaLike ↔ n } $egammaLike ;
93 Γ } $gammaLike ↔ N } $egammaLike ;
102 Θ } $beforeLower ↔ Th ;
112 ν } $gammaLike → n\' ;
114 Ν } $gammaLike ↔ N\' ;
124 # insert separator before things that turn into s
125 [Pp] { } [ςσΣϷϸϺϻ] → \' ;
127 Ϸ ↔ S\u030C ; # Ϸ GREEK CAPITAL LETTER SHO Uppercase_Letter Grek - L
128 ϸ ↔ s\u030C ; #ϸ GREEK SMALL LETTER SHO Lowercase_Letter Grek - L
129 Ϻ ↔ S\u0302 ; # Ϻ GREEK CAPITAL LETTER SAN Uppercase_Letter Grek - L
130 ϻ ↔ s\u0302 ; # ϻ GREEK SMALL LETTER SAN Lowercase_Letter Grek - L
131 # Caron means exception
132 # before a letter, initial
133 ς } $beforeLetter ↔ s $under } $beforeLetter;
134 σ } $beforeLetter ↔ s } $beforeLetter;
135 # otherwise, after a letter = final
136 $afterLetter { σ ↔ $afterLetter { s $under;
137 $afterLetter { ς ↔ $afterLetter { s ;
138 # otherwise (isolated) = initial
148 Χ } $beforeLower ↔ Ch ;
150 # Completeness for ASCII
151 # $ignore = [[:Mark:]''] * ;
168 # Completeness for Greek
177 Ϲ → | Σ; #U+03F9 GREEK CAPITAL LUNATE SIGMA SYMBOL
182 # delete any trailing ' marks used for roundtripping
184 ← [Νν] { \' } $egammaLike ;
186 # MINIMAL FILTER GENERATED FOR: Latin-Greek/UNGEGN BACKWARD
187 :: ([[[:Latin:][:Mn:][:Me:]] ['\:?]]) ;