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