1 # ***************************************************************************
3 # * Copyright (C) 2004-2016, International Business Machines
4 # * Corporation; Unicode, Inc.; and others. All Rights Reserved.
6 # ***************************************************************************
11 # TODO: add remaining characters
12 # Should add variants for Russian-English, Russian-German
13 # Those can use this as a base, and then remap cases
14 # like a $hat to ya or ja.
15 # :: [\u0000-\u007E ʹ ʺ [:Cyrillic:] [:Latin:] [:nonspacing mark:]] ;
16 ### WARNING, \u0308 must be added to the generated filters, in both directions ###
18 :: [Ққ\u0308Ă-ăĔ-ĕĞ-ğĬ-ĭŎ-ŏŬ-ŭ\u0306Ѐ-џҐ-ҕҘ-ҙӁ-ӂӐ-ӟӢ-ӧӬ-ӵӸ-ӹḜ-ḝẮ-ặᾰᾸῐῘῠῨ] ;
31 # move up so not masked
32 я ↔ a $hat ; # CYRILLIC SMALL LETTER YA
33 Я ↔ A $hat ; # CYRILLIC CAPITAL LETTER YA
34 ч ↔ c $caron ; # CYRILLIC SMALL LETTER CHE
35 Ч ↔ C $caron; # CYRILLIC CAPITAL LETTER CHE
36 # ҷ ↔ XXX ; # CYRILLIC SMALL LETTER CHE WITH DESCENDER
37 # Ҷ ↔ XXX ; # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
38 # ӌ ↔ XXX ; # CYRILLIC SMALL LETTER KHAKASSIAN CHE
39 # Ӌ ↔ XXX ; # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
40 # ҹ ↔ XXX ; # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
41 # Ҹ ↔ XXX ; # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
42 э ↔ e $acute; # CYRILLIC SMALL LETTER E
43 Э ↔ E $acute; # CYRILLIC CAPITAL LETTER E
44 є ↔ e $hat; # CYRILLIC SMALL LETTER UKRAINIAN IE
45 Є ↔ E $hat; # CYRILLIC CAPITAL LETTER UKRAINIAN IE
46 ш ↔ s $caron ; # CYRILLIC SMALL LETTER SHA
47 Ш ↔ S $caron ; # CYRILLIC CAPITAL LETTER SHA
48 щ ↔ s $hat ; # CYRILLIC SMALL LETTER SHCHA
49 Щ ↔ S $hat; # CYRILLIC CAPITAL LETTER SHCHA
50 ѕ ↔ z $hat ; # CYRILLIC SMALL LETTER DZE
51 Ѕ ↔ Z $hat; # CYRILLIC CAPITAL LETTER DZE
52 # ӡ ↔ XXX ; # CYRILLIC SMALL LETTER ABKHASIAN DZE
53 # Ӡ ↔ XXX ; # CYRILLIC CAPITAL LETTER ABKHASIAN DZE
54 ю ↔ u $hat ; # CYRILLIC SMALL LETTER YU
55 Ю ↔ U $hat ; # CYRILLIC CAPITAL LETTER YU
56 і ↔ i $acute; # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
57 І ↔ I $acute; # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
58 ј ↔ j $caron; # CYRILLIC SMALL LETTER JE
59 Ј ↔ J $caron; # CYRILLIC CAPITAL LETTER JE
60 љ ↔ l $hat ; # CYRILLIC SMALL LETTER LJE
61 Љ ↔ L $hat ; # CYRILLIC CAPITAL LETTER LJE
62 њ ↔ n $hat ; # CYRILLIC SMALL LETTER NJE
63 Њ ↔ N $hat ; # CYRILLIC CAPITAL LETTER NJE
64 ћ ↔ c $acute ; # CYRILLIC SMALL LETTER TSHE
65 Ћ ↔ C $acute ; # CYRILLIC CAPITAL LETTER TSHE
66 џ ↔ d $hat ; # CYRILLIC SMALL LETTER DZHE
67 Џ ↔ D $hat ; # CYRILLIC CAPITAL LETTER DZHE
69 а ↔ a ; # CYRILLIC SMALL LETTER A
70 А ↔ A ; # CYRILLIC CAPITAL LETTER A
71 ә ↔ ə ; # CYRILLIC SMALL LETTER SCHWA
72 Ә ↔ Ə ; # CYRILLIC CAPITAL LETTER SCHWA
73 ӕ ↔ æ ; # CYRILLIC SMALL LIGATURE A IE
74 Ӕ ↔ Æ ; # CYRILLIC CAPITAL LIGATURE A IE
75 б ↔ b ; # CYRILLIC SMALL LETTER BE
76 Б ↔ B ; # CYRILLIC CAPITAL LETTER BE
77 в ↔ v ; # CYRILLIC SMALL LETTER VE
78 В ↔ V ; # CYRILLIC CAPITAL LETTER VE
79 ґ ↔ g $grave ; # CYRILLIC SMALL LETTER GHE WITH UPTURN
80 Ґ ↔ G $grave ; # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
81 ғ ↔ g $dot ; # CYRILLIC SMALL LETTER GHE WITH STROKE
82 Ғ ↔ G $dot; # CYRILLIC CAPITAL LETTER GHE WITH STROKE
83 ҕ ↔ g $breve; # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
84 Ҕ ↔ G $breve; # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
85 г ↔ g ; # CYRILLIC SMALL LETTER GHE
86 Г ↔ G ; # CYRILLIC CAPITAL LETTER GHE
87 д ↔ d; # CYRILLIC SMALL LETTER DE
88 Д ↔ D; # CYRILLIC CAPITAL LETTER DE
89 ђ ↔ đ ; # CYRILLIC SMALL LETTER DJE
90 Ђ ↔ Đ ; # CYRILLIC CAPITAL LETTER DJE
91 ҙ ↔ z $comma ; # CYRILLIC SMALL LETTER ZE WITH DESCENDER
92 Ҙ ↔ Z $comma ; # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
93 е ↔ e ; # CYRILLIC SMALL LETTER IE
94 Е ↔ E; # CYRILLIC CAPITAL LETTER IE
95 ж ↔ z $caron; # CYRILLIC SMALL LETTER ZHE
96 Ж ↔ Z $caron; # CYRILLIC CAPITAL LETTER ZHE
97 # җ ↔ XXX ; # CYRILLIC SMALL LETTER ZHE WITH DESCENDER
98 # Җ ↔ XXX ; # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
99 з ↔ z ; # CYRILLIC SMALL LETTER ZE
100 З ↔ Z; # CYRILLIC CAPITAL LETTER ZE
101 и\u0306 ↔ j ; # CYRILLIC SMALL LETTER I
102 И\u0306 ↔ J ; # CYRILLIC CAPITAL LETTER I
103 и ↔ i ; # CYRILLIC SMALL LETTER I
104 И ↔ I ; # CYRILLIC CAPITAL LETTER I
105 қ ↔ k $descender ; # CYRILLIC SMALL LETTER KA WITH DESCENDER
106 Қ ↔ K $descender ; # CYRILLIC CAPITAL LETTER KA WITH DESCENDER
107 к ↔ k ; # CYRILLIC SMALL LETTER KA
108 К ↔ K; # CYRILLIC CAPITAL LETTER KA
109 # ӄ ↔ XXX ; # CYRILLIC SMALL LETTER KA WITH HOOK
110 # Ӄ ↔ XXX ; # CYRILLIC CAPITAL LETTER KA WITH HOOK
111 # ҡ ↔ XXX ; # CYRILLIC SMALL LETTER BASHKIR KA
112 # Ҡ ↔ XXX ; # CYRILLIC CAPITAL LETTER BASHKIR KA
113 # ҟ ↔ XXX ; # CYRILLIC SMALL LETTER KA WITH STROKE
114 # Ҟ ↔ XXX ; # CYRILLIC CAPITAL LETTER KA WITH STROKE
115 # ҝ ↔ XXX ; # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
116 # Ҝ ↔ XXX ; # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
117 л ↔ l ; # CYRILLIC SMALL LETTER EL
118 Л ↔ L; # CYRILLIC CAPITAL LETTER EL
119 м ↔ m ; # CYRILLIC SMALL LETTER EM
120 М ↔ M ; # CYRILLIC CAPITAL LETTER EM
121 н ↔ n ; # CYRILLIC SMALL LETTER EN
122 Н ↔ N; # CYRILLIC CAPITAL LETTER EN
123 # ң ↔ XXX ; # CYRILLIC SMALL LETTER EN WITH DESCENDER
124 # Ң ↔ XXX ; # CYRILLIC CAPITAL LETTER EN WITH DESCENDER
125 # ӈ ↔ XXX ; # CYRILLIC SMALL LETTER EN WITH HOOK
126 # Ӈ ↔ XXX ; # CYRILLIC CAPITAL LETTER EN WITH HOOK
127 # ҥ ↔ XXX ; # CYRILLIC SMALL LIGATURE EN GHE
128 # Ҥ ↔ XXX ; # CYRILLIC CAPITAL LIGATURE EN GHE
129 о ↔ o ; # CYRILLIC SMALL LETTER O
130 О ↔ O ; # CYRILLIC CAPITAL LETTER O
131 # ө ↔ XXX ; # CYRILLIC SMALL LETTER BARRED O
132 # Ө ↔ XXX ; # CYRILLIC CAPITAL LETTER BARRED O
133 п ↔ p ; # CYRILLIC SMALL LETTER PE
134 П ↔ P ; # CYRILLIC CAPITAL LETTER PE
135 # ҧ ↔ XXX ; # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
136 # Ҧ ↔ XXX ; # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
137 # ҁ ↔ XXX ; # CYRILLIC SMALL LETTER KOPPA
138 # Ҁ ↔ XXX ; # CYRILLIC CAPITAL LETTER KOPPA
139 р ↔ r ; # CYRILLIC SMALL LETTER ER
140 Р ↔ R ; # CYRILLIC CAPITAL LETTER ER
141 # ҏ ↔ XXX ; # CYRILLIC SMALL LETTER ER WITH TICK
142 # Ҏ ↔ XXX ; # CYRILLIC CAPITAL LETTER ER WITH TICK
143 с ↔ s ; # CYRILLIC SMALL LETTER ES
144 С ↔ S ; # CYRILLIC CAPITAL LETTER ES
145 # ҫ ↔ XXX ; # CYRILLIC SMALL LETTER ES WITH DESCENDER
146 # Ҫ ↔ XXX ; # CYRILLIC CAPITAL LETTER ES WITH DESCENDER
147 т ↔ t ; # CYRILLIC SMALL LETTER TE
148 Т ↔ T ; # CYRILLIC CAPITAL LETTER TE
149 # ҭ ↔ XXX ; # CYRILLIC SMALL LETTER TE WITH DESCENDER
150 # Ҭ ↔ XXX ; # CYRILLIC CAPITAL LETTER TE WITH DESCENDER
151 у ↔ u ; # CYRILLIC SMALL LETTER U
152 У ↔ U ; # CYRILLIC CAPITAL LETTER U
153 # ү ↔ XXX ; # CYRILLIC SMALL LETTER STRAIGHT U
154 # Ү ↔ XXX ; # CYRILLIC CAPITAL LETTER STRAIGHT U
155 # ұ ↔ XXX ; # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
156 # Ұ ↔ XXX ; # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
157 # ѹ ↔ XXX ; # CYRILLIC SMALL LETTER UK
158 # Ѹ ↔ XXX ; # CYRILLIC CAPITAL LETTER UK
159 ф ↔ f ; # CYRILLIC SMALL LETTER EF
160 Ф ↔ F ; # CYRILLIC CAPITAL LETTER EF
161 х ↔ h ; # CYRILLIC SMALL LETTER HA
162 Х ↔ H; # CYRILLIC CAPITAL LETTER HA
163 # ҳ ↔ XXX ; # CYRILLIC SMALL LETTER HA WITH DESCENDER
164 # Ҳ ↔ XXX ; # CYRILLIC CAPITAL LETTER HA WITH DESCENDER
165 # һ ↔ XXX ; # CYRILLIC SMALL LETTER SHHA
166 # Һ ↔ XXX ; # CYRILLIC CAPITAL LETTER SHHA
167 # ѡ ↔ XXX ; # CYRILLIC SMALL LETTER OMEGA
168 # Ѡ ↔ XXX ; # CYRILLIC CAPITAL LETTER OMEGA
169 # ѿ ↔ XXX ; # CYRILLIC SMALL LETTER OT
170 # Ѿ ↔ XXX ; # CYRILLIC CAPITAL LETTER OT
171 # ѽ ↔ XXX ; # CYRILLIC SMALL LETTER OMEGA WITH TITLO
172 # Ѽ ↔ XXX ; # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
173 # ѻ ↔ XXX ; # CYRILLIC SMALL LETTER ROUND OMEGA
174 # Ѻ ↔ XXX ; # CYRILLIC CAPITAL LETTER ROUND OMEGA
175 ц ↔ c ; # CYRILLIC SMALL LETTER TSE
176 Ц ↔ C; # CYRILLIC CAPITAL LETTER TSE
177 # ҵ ↔ XXX ; # CYRILLIC SMALL LIGATURE TE TSE
178 # Ҵ ↔ XXX ; # CYRILLIC CAPITAL LIGATURE TE TSE
179 # ҽ ↔ XXX ; # CYRILLIC SMALL LETTER ABKHASIAN CHE
180 # Ҽ ↔ XXX ; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE
181 # ҿ ↔ XXX ; # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
182 # Ҿ ↔ XXX ; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
183 Ъ ↔ $modprime2 $under ; # CYRILLIC CAPITAL LETTER HARD SIGN
184 ъ ↔ $modprime2 ; # CYRILLIC SMALL LETTER HARD SIGN
185 Ь ↔ $modprime $under ; # CYRILLIC CAPITAL LETTER SOFT SIGN
186 ь ↔ $modprime ; # CYRILLIC SMALL LETTER SOFT SIGN
187 ы ↔ y ; # CYRILLIC SMALL LETTER YERU
188 Ы ↔ Y ; # CYRILLIC CAPITAL LETTER YERU
189 # ҍ ↔ XXX ; # CYRILLIC SMALL LETTER SEMISOFT SIGN
190 # Ҍ ↔ XXX ; # CYRILLIC CAPITAL LETTER SEMISOFT SIGN
191 # ѣ ↔ XXX ; # CYRILLIC SMALL LETTER YAT
192 # Ѣ ↔ XXX ; # CYRILLIC CAPITAL LETTER YAT
193 # ѥ ↔ XXX ; # CYRILLIC SMALL LETTER IOTIFIED E
194 # Ѥ ↔ XXX ; # CYRILLIC CAPITAL LETTER IOTIFIED E
195 # ѧ ↔ XXX ; # CYRILLIC SMALL LETTER LITTLE YUS
196 # Ѧ ↔ XXX ; # CYRILLIC CAPITAL LETTER LITTLE YUS
197 # ѫ ↔ XXX ; # CYRILLIC SMALL LETTER BIG YUS
198 # Ѫ ↔ XXX ; # CYRILLIC CAPITAL LETTER BIG YUS
199 # ѩ ↔ XXX ; # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
200 # Ѩ ↔ XXX ; # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
201 # ѭ ↔ XXX ; # CYRILLIC SMALL LETTER IOTIFIED BIG YUS
202 # Ѭ ↔ XXX ; # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
203 # ѯ ↔ XXX ; # CYRILLIC SMALL LETTER KSI
204 # Ѯ ↔ XXX ; # CYRILLIC CAPITAL LETTER KSI
205 # ѱ ↔ XXX ; # CYRILLIC SMALL LETTER PSI
206 # Ѱ ↔ XXX ; # CYRILLIC CAPITAL LETTER PSI
207 # ѳ ↔ XXX ; # CYRILLIC SMALL LETTER FITA
208 # Ѳ ↔ XXX ; # CYRILLIC CAPITAL LETTER FITA
209 # ѵ ↔ XXX ; # CYRILLIC SMALL LETTER IZHITSA
210 # Ѵ ↔ XXX ; # CYRILLIC CAPITAL LETTER IZHITSA
211 # ҩ ↔ XXX ; # CYRILLIC SMALL LETTER ABKHASIAN HA
212 # Ҩ ↔ XXX ; # CYRILLIC CAPITAL LETTER ABKHASIAN HA
213 # Ӏ ↔ XXX ; # CYRILLIC LETTER PALOCHKA
214 ### а\u0306 ↔ XXX ; # CYRILLIC SMALL LETTER A
215 ### А\u0306 ↔ XXX ; # CYRILLIC CAPITAL LETTER A
216 ### а\u0308 ↔ XXX ; # CYRILLIC SMALL LETTER A
217 ### А\u0308 ↔ XXX ; # CYRILLIC CAPITAL LETTER A
218 ### ә\u0308 ↔ XXX ; # CYRILLIC SMALL LETTER SCHWA
219 ### Ә\u0308 ↔ XXX ; # CYRILLIC CAPITAL LETTER SCHWA
220 ### г\u0301 ↔ XXX ; # CYRILLIC SMALL LETTER GHE
221 ### Г\u0301 ↔ XXX ; # CYRILLIC CAPITAL LETTER GHE
222 ### е\u0300 ↔ XXX ; # CYRILLIC SMALL LETTER IE
223 ### Е\u0300 ↔ XXX ; # CYRILLIC CAPITAL LETTER IE
224 ### е\u0308 ↔ XXX ; # CYRILLIC SMALL LETTER IE
225 ### Е\u0308 ↔ XXX ; # CYRILLIC CAPITAL LETTER IE
226 ### е\u0306 ↔ XXX ; # CYRILLIC SMALL LETTER IE
227 ### Е\u0306 ↔ XXX ; # CYRILLIC CAPITAL LETTER IE
228 ### ж\u0306 ↔ XXX ; # CYRILLIC SMALL LETTER ZHE
229 ### Ж\u0306 ↔ XXX ; # CYRILLIC CAPITAL LETTER ZHE
230 ### ж\u0308 ↔ XXX ; # CYRILLIC SMALL LETTER ZHE
231 ### Ж\u0308 ↔ XXX ; # CYRILLIC CAPITAL LETTER ZHE
232 ### з\u0308 ↔ XXX ; # CYRILLIC SMALL LETTER ZE
233 ### З\u0308 ↔ XXX ; # CYRILLIC CAPITAL LETTER ZE
234 ### и\u0300 ↔ XXX ; # CYRILLIC SMALL LETTER I
235 ### И\u0300 ↔ XXX ; # CYRILLIC CAPITAL LETTER I
236 ### и\u0304 ↔ XXX ; # CYRILLIC SMALL LETTER I
237 ### И\u0304 ↔ XXX ; # CYRILLIC CAPITAL LETTER I
238 ### и\u0308 ↔ XXX ; # CYRILLIC SMALL LETTER I
239 ### И\u0308 ↔ XXX ; # CYRILLIC CAPITAL LETTER I
240 ### і\u0308 ↔ XXX ; # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
241 ### І\u0308 ↔ XXX ; # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
242 ### о\u0308 ↔ XXX ; # CYRILLIC SMALL LETTER O
243 ### О\u0308 ↔ XXX ; # CYRILLIC CAPITAL LETTER O
244 ### ө\u0308 ↔ XXX ; # CYRILLIC SMALL LETTER BARRED O
245 ### Ө\u0308 ↔ XXX ; # CYRILLIC CAPITAL LETTER BARRED O
246 ### к\u0301 ↔ XXX ; # CYRILLIC SMALL LETTER KA
247 ### К\u0301 ↔ XXX ; # CYRILLIC CAPITAL LETTER KA
248 ### у\u0304 ↔ XXX ; # CYRILLIC SMALL LETTER U
249 ### У\u0304 ↔ XXX ; # CYRILLIC CAPITAL LETTER U
250 ### у\u0306 ↔ XXX ; # CYRILLIC SMALL LETTER U
251 ### У\u0306 ↔ XXX ; # CYRILLIC CAPITAL LETTER U
252 ### у\u0308 ↔ XXX ; # CYRILLIC SMALL LETTER U
253 ### У\u0308 ↔ XXX ; # CYRILLIC CAPITAL LETTER U
254 ### у\u030B ↔ XXX ; # CYRILLIC SMALL LETTER U
255 ### У\u030B ↔ XXX ; # CYRILLIC CAPITAL LETTER U
256 ### ч\u0308 ↔ XXX ; # CYRILLIC SMALL LETTER CHE
257 ### Ч\u0308 ↔ XXX ; # CYRILLIC CAPITAL LETTER CHE
258 ### ы\u0308 ↔ XXX ; # CYRILLIC SMALL LETTER YERU
259 ### Ы\u0308 ↔ XXX ; # CYRILLIC CAPITAL LETTER YERU
260 ### э\u0308 ↔ XXX ; # CYRILLIC SMALL LETTER E
261 ### Э\u0308 ↔ XXX ; # CYRILLIC CAPITAL LETTER E
262 ### ѵ\u030F ↔ XXX ; # CYRILLIC SMALL LETTER IZHITSA
263 ### Ѵ\u030F ↔ XXX ; # CYRILLIC CAPITAL LETTER IZHITSA
265 $ignore = [[:Mark:]''] * ;
270 | KS ← X } $ignore [:UppercaseLetter:] ;
271 | KS ← [:UppercaseLetter:] $ignore { X ;
275 # note: a global filter is more efficient, but MUST include all source chars!!
276 # :: ([\u0000-\u007E ʹ ʺ [:Cyrillic:] [:Latin:] [:nonspacing mark:]]);
277 # MINIMAL FILTER: Latin-Cyrillic
278 :: ( [ˌ\u0308A-Za-zÀ-ÏÑ-ÖÙ-Ýà-ïñ-öù-ýÿ-ĥĨ-İĴ-ķĹ-ľŃ-ňŌ-őŔ-ťŨ-žƏƠ-ơƯ-ưǍ-ǜǞ-ǣǦ-ǰǴ-ǵǸ-țȞ-ȟȦ-ȳəʹ-ʺ\u0300-\u0302\u0306-\u0307\u030C\u0326\u0331\u0340-\u0341\u0344ʹ΅-ΆΈ-ΊΌΎ-ΐά-ΰό-ώϓЀЃЌ-ЎЙйѐѓќ-ўӁ-ӂӐ-ӑӖ-ӗḀ-ẙẛẠ-ỹἂ-ἅἊ-Ἅἒ-ἕἚ-Ἕἢ-ἥἪ-Ἥἲ-ἵἺ-Ἵὂ-ὅὊ-Ὅὒ-ὕὛὝὢ-ὥὪ-Ὥὰ-ώᾂ-ᾅᾊ-ᾍᾒ-ᾕᾚ-ᾝᾢ-ᾥᾪ-ᾭᾰᾲᾴᾸᾺ-ΆῂῄῈ-Ή῍-῎ῐῒ-ΐῘῚ-Ί῝-῞ῠῢ-ΰῨῪ-Ύ῭-΅ῲῴῸ-ΏK-Å] ) ;