local u = require("Module:string/char")
local casing = {
= {
-- Internally unsupported mappings
= {'dž', 'Dž', 'DŽ'}, -- LATIN CAPITAL LETTER DZ WITH CARON
= {'dž', 'Dž', 'DŽ'}, -- LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
= {'dž', 'Dž', 'DŽ'}, -- LATIN SMALL LETTER DZ WITH CARON
= {'lj', 'Lj', 'LJ'}, -- LATIN CAPITAL LETTER LJ
= {'lj', 'Lj', 'LJ'}, -- LATIN CAPITAL LETTER L WITH SMALL LETTER J
= {'lj', 'Lj', 'LJ'}, -- LATIN SMALL LETTER LJ
= {'nj', 'Nj', 'NJ'}, -- LATIN CAPITAL LETTER NJ
= {'nj', 'Nj', 'NJ'}, -- LATIN CAPITAL LETTER N WITH SMALL LETTER J
= {'nj', 'Nj', 'NJ'}, -- LATIN SMALL LETTER NJ
= {'dz', 'Dz', 'DZ'}, -- LATIN CAPITAL LETTER DZ
= {'dz', 'Dz', 'DZ'}, -- LATIN CAPITAL LETTER D WITH SMALL LETTER Z
= {'dz', 'Dz', 'DZ'}, -- LATIN SMALL LETTER DZ
= {'ꞌ', 'Ꞌ', 'Ꞌ'}, -- LATIN CAPITAL LETTER SALTILLO
= {'ꞌ', 'Ꞌ', 'Ꞌ'}, -- LATIN SMALL LETTER SALTILLO
-- http://www.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt
-- Unconditional mappings
= {'ß', 'Ss', 'SS'}, -- LATIN SMALL LETTER SHARP S
-- = {'i'..u(0x0307), 'İ', 'İ'}, -- LATIN CAPITAL LETTER I WITH DOT ABOVE
= {'ff', 'Ff', 'FF'}, -- LATIN SMALL LIGATURE FF
= {'fi', 'Fi', 'FI'}, -- LATIN SMALL LIGATURE FI
= {'fl', 'Fl', 'FL'}, -- LATIN SMALL LIGATURE FL
= {'ffi', 'Ffi', 'FFI'}, -- LATIN SMALL LIGATURE FFI
= {'ffl', 'Ffl', 'FFL'}, -- LATIN SMALL LIGATURE FFL
= {'ſt', 'St', 'ST'}, -- LATIN SMALL LIGATURE LONG S T
= {'st', 'St', 'ST'}, -- LATIN SMALL LIGATURE ST
= {'և', 'Եւ', 'ԵՒ'}, -- ARMENIAN SMALL LIGATURE ECH YIWN
= {'ﬓ', 'Մն', 'ՄՆ'}, -- ARMENIAN SMALL LIGATURE MEN NOW
= {'ﬔ', 'Մե', 'ՄԵ'}, -- ARMENIAN SMALL LIGATURE MEN ECH
= {'ﬕ', 'Մի', 'ՄԻ'}, -- ARMENIAN SMALL LIGATURE MEN INI
= {'ﬖ', 'Վն', 'ՎՆ'}, -- ARMENIAN SMALL LIGATURE VEW NOW
= {'ﬗ', 'Մխ', 'ՄԽ'}, -- ARMENIAN SMALL LIGATURE MEN XEH
= {'ʼn', 'ʼN', 'ʼN'}, -- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
= {'ΐ', 'Ι'..u(0x0308)..u(0x0301), 'Ι'..u(0x0308)..u(0x0301)}, -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
= {'ΰ', 'Υ'..u(0x0308)..u(0x0301), 'Υ'..u(0x0308)..u(0x0301)}, -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
= {'ǰ', 'J'..u(0x030C), 'J'..u(0x030C)}, -- LATIN SMALL LETTER J WITH CARON
= {'ẖ', 'H'..u(0x0331), 'H'..u(0x0331)}, -- LATIN SMALL LETTER H WITH LINE BELOW
= {'ẗ', 'T'..u(0x0308), 'T'..u(0x0308)}, -- LATIN SMALL LETTER T WITH DIAERESIS
= {'ẘ', 'W'..u(0x030A), 'W'..u(0x030A)}, -- LATIN SMALL LETTER W WITH RING ABOVE
= {'ẙ', 'Y'..u(0x030A), 'Y'..u(0x030A)}, -- LATIN SMALL LETTER Y WITH RING ABOVE
= {'ẚ', 'Aʾ', 'Aʾ'}, -- LATIN SMALL LETTER A WITH RIGHT HALF RING
= {'ὐ', 'Υ'..u(0x0313), 'Υ'..u(0x0313)}, -- GREEK SMALL LETTER UPSILON WITH PSILI
= {'ὒ', 'Υ'..u(0x0313)..u(0x0300), 'Υ'..u(0x0313)..u(0x0300)}, -- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
= {'ὔ', 'Υ'..u(0x0313)..u(0x0301), 'Υ'..u(0x0313)..u(0x0301)}, -- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
= {'ὖ', 'Υ'..u(0x0313)..u(0x0342), 'Υ'..u(0x0313)..u(0x0342)}, -- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
= {'ᾶ', 'Α'..u(0x0342), 'Α'..u(0x0342)}, -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI
= {'ῆ', 'Η'..u(0x0342), 'Η'..u(0x0342)}, -- GREEK SMALL LETTER ETA WITH PERISPOMENI
= {'ῒ', 'Ι'..u(0x0308)..u(0x0300), 'Ι'..u(0x0308)..u(0x0300)}, -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
= {'ΐ', 'Ι'..u(0x0308)..u(0x0301), 'Ι'..u(0x0308)..u(0x0301)}, -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
= {'ῖ', 'Ι'..u(0x0342), 'Ι'..u(0x0342)}, -- GREEK SMALL LETTER IOTA WITH PERISPOMENI
= {'ῗ', 'Ι'..u(0x0308)..u(0x0342), 'Ι'..u(0x0308)..u(0x0342)}, -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
= {'ῢ', 'Υ'..u(0x0308)..u(0x0300), 'Υ'..u(0x0308)..u(0x0300)}, -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
= {'ΰ', 'Υ'..u(0x0308)..u(0x0301), 'Υ'..u(0x0308)..u(0x0301)}, -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
= {'ῤ', 'Ρ'..u(0x0313), 'Ρ'..u(0x0313)}, -- GREEK SMALL LETTER RHO WITH PSILI
= {'ῦ', 'Υ'..u(0x0342), 'Υ'..u(0x0342)}, -- GREEK SMALL LETTER UPSILON WITH PERISPOMENI
= {'ῧ', 'Υ'..u(0x0308)..u(0x0342), 'Υ'..u(0x0308)..u(0x0342)}, -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
= {'ῶ', 'Ω'..u(0x0342), 'Ω'..u(0x0342)}, -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI
= {'ᾀ', 'ᾈ', 'ἈΙ'}, -- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
= {'ᾁ', 'ᾉ', 'ἉΙ'}, -- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
= {'ᾂ', 'ᾊ', 'ἊΙ'}, -- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
= {'ᾃ', 'ᾋ', 'ἋΙ'}, -- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
= {'ᾄ', 'ᾌ', 'ἌΙ'}, -- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
= {'ᾅ', 'ᾍ', 'ἍΙ'}, -- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
= {'ᾆ', 'ᾎ', 'ἎΙ'}, -- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
= {'ᾇ', 'ᾏ', 'ἏΙ'}, -- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
= {'ᾀ', 'ᾈ', 'ἈΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
= {'ᾁ', 'ᾉ', 'ἉΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
= {'ᾂ', 'ᾊ', 'ἊΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
= {'ᾃ', 'ᾋ', 'ἋΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
= {'ᾄ', 'ᾌ', 'ἌΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
= {'ᾅ', 'ᾍ', 'ἍΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
= {'ᾆ', 'ᾎ', 'ἎΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
= {'ᾇ', 'ᾏ', 'ἏΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
= {'ᾐ', 'ᾘ', 'ἨΙ'}, -- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
= {'ᾑ', 'ᾙ', 'ἩΙ'}, -- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
= {'ᾒ', 'ᾚ', 'ἪΙ'}, -- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
= {'ᾓ', 'ᾛ', 'ἫΙ'}, -- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
= {'ᾔ', 'ᾜ', 'ἬΙ'}, -- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
= {'ᾕ', 'ᾝ', 'ἭΙ'}, -- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
= {'ᾖ', 'ᾞ', 'ἮΙ'}, -- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
= {'ᾗ', 'ᾟ', 'ἯΙ'}, -- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
= {'ᾐ', 'ᾘ', 'ἨΙ'}, -- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
= {'ᾑ', 'ᾙ', 'ἩΙ'}, -- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
= {'ᾒ', 'ᾚ', 'ἪΙ'}, -- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
= {'ᾓ', 'ᾛ', 'ἫΙ'}, -- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
= {'ᾔ', 'ᾜ', 'ἬΙ'}, -- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
= {'ᾕ', 'ᾝ', 'ἭΙ'}, -- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
= {'ᾖ', 'ᾞ', 'ἮΙ'}, -- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
= {'ᾗ', 'ᾟ', 'ἯΙ'}, -- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
= {'ᾠ', 'ᾨ', 'ὨΙ'}, -- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
= {'ᾡ', 'ᾩ', 'ὩΙ'}, -- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
= {'ᾢ', 'ᾪ', 'ὪΙ'}, -- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
= {'ᾣ', 'ᾫ', 'ὫΙ'}, -- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
= {'ᾤ', 'ᾬ', 'ὬΙ'}, -- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
= {'ᾥ', 'ᾭ', 'ὭΙ'}, -- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
= {'ᾦ', 'ᾮ', 'ὮΙ'}, -- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
= {'ᾧ', 'ᾯ', 'ὯΙ'}, -- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
= {'ᾠ', 'ᾨ', 'ὨΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
= {'ᾡ', 'ᾩ', 'ὩΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
= {'ᾢ', 'ᾪ', 'ὪΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
= {'ᾣ', 'ᾫ', 'ὫΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
= {'ᾤ', 'ᾬ', 'ὬΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
= {'ᾥ', 'ᾭ', 'ὭΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
= {'ᾦ', 'ᾮ', 'ὮΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
= {'ᾧ', 'ᾯ', 'ὯΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
= {'ᾳ', 'ᾼ', 'ΑΙ'}, -- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
= {'ᾳ', 'ᾼ', 'ΑΙ'}, -- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
= {'ῃ', 'ῌ', 'ΗΙ'}, -- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
= {'ῃ', 'ῌ', 'ΗΙ'}, -- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
= {'ῳ', 'ῼ', 'ΩΙ'}, -- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
= {'ῳ', 'ῼ', 'ΩΙ'}, -- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
= {'ᾲ', 'Ὰ'..u(0x0345), 'ᾺΙ'}, -- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
= {'ᾴ', 'Ά'..u(0x0345), 'ΆΙ'}, -- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
= {'ῂ', 'Ὴ'..u(0x0345), 'ῊΙ'}, -- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
= {'ῄ', 'Ή'..u(0x0345), 'ΉΙ'}, -- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
= {'ῲ', 'Ὼ'..u(0x0345), 'ῺΙ'}, -- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
= {'ῴ', 'Ώ'..u(0x0345), 'ΏΙ'}, -- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
= {'ᾷ', 'Α'..u(0x0342)..u(0x0345), 'Α'..u(0x0342)..'Ι'}, -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
= {'ῇ', 'Η'..u(0x0342)..u(0x0345), 'Η'..u(0x0342)..'Ι'}, -- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
= {'ῷ', 'Ω'..u(0x0342)..u(0x0345), 'Ω'..u(0x0342)..'Ι'}, -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
},
= {
= {'i'..u(0x0307), 'I', 'I'}, -- LATIN CAPITAL LETTER I
= {'j'..u(0x0307), 'J', 'J'}, -- LATIN CAPITAL LETTER J
= {'į'..u(0x0307), 'Į', 'Į'}, -- LATIN CAPITAL LETTER I WITH OGONEK
= {'i'..u(0x0307)..u(0x0300), 'Ì', 'Ì'}, -- LATIN CAPITAL LETTER I WITH GRAVE
= {'i'..u(0x0307)..u(0x0301), 'Í', 'Í'}, -- LATIN CAPITAL LETTER I WITH ACUTE
= {'i'..u(0x0307)..u(0x0303), 'Ĩ', 'Ĩ'}, -- LATIN CAPITAL LETTER I WITH TILDE
},
= {
= {'ı', 'I', 'I'}, -- LATIN CAPITAL LETTER I
= {'ı', 'I', 'I'}, -- LATIN SMALL LETTER DOTLESS I
= {'i', 'İ', 'İ'}, -- LATIN CAPITAL LETTER I WITH DOT ABOVE
= {'i', 'İ', 'İ'}, -- LATIN SMALL LETTER I
},
}
return casing