- // Cyrillic.
- // Cyrillic letters are sorted like Latin letters i.e.
- // containing culture-specific letters between the
- // standard Cyrillic sequence.
- //
- // We can't use UCA here; it has different sorting.
- char [] orderedCyrillic = new char [] {
- '\u0430', '\u0431', '\u0432', '\u0433', '\u0434',
- '\u0452', // DJE for Serbocroatian
- '\u0435',
- '\u0454', // IE for Ukrainian
- '\u0436', '\u0437',
- '\u0455', // DZE
- '\u0438',
- '\u0456', // Byelorussian-Ukrainian I
- '\u0457', // YI
- '\u0439',
- '\u0458', // JE
- '\u043A', '\u043B',
- '\u0459', // LJE
- '\u043C', '\u043D',
- '\u045A', // NJE
- '\u043E',
- // 4E9 goes here.
- '\u043F', '\u0440', '\u0441', '\u0442',
- '\u045B', // TSHE for Serbocroatian
- '\u0443',
- '\u045E', // Short U for Byelorussian
- '\u04B1', // Straight U w/ stroke (diacritical!)
- '\u0444', '\u0445', '\u0446', '\u0447',
- '\u045F', // DZHE
- '\u0448', '\u0449', '\u044A', '\u044B', '\u044C',
- '\u044D', '\u044E', '\u044F'};
-
- // For some characters here is a map to basic cyrillic
- // letters. See UnicodeData.txt character names for
- // the sources. Here I simply declare an equiv. array.
- // The content characters are map from U+490(,491),
- // skipping small letters.
- char [] cymap_src = new char [] {
- '\u0433', '\u0433', '\u0433', '\u0436',
- '\u0437', '\u043A', '\u043A', '\u043A',
- '\u043A', '\u043D', '\u043D', '\u043F',
- '\u0445', '\u0441', '\u0442', '\u0443',
- '\u0443', '\u0445', '\u0446', '\u0447',
- '\u0447', '\u0432', '\u0435', '\u0435',
- '\u0406', '\u0436', '\u043A', '\u043D',
- '\u0447', '\u0435'};
-
- fillIndex [0x10] = 0x8D;
- for (int i = 0x0460; i < 0x0481; i++) {
- if (Char.IsLetter ((char) i)) {
- if (i == 0x0476)
- // U+476/477 have the same
- // primary weight as U+474/475.
- fillIndex [0x10] -= 3;
- AddLetterMap ((char) i, 0x10, 3);
- }
- }
-
- fillIndex [0x10] = 0x6;