Unicode 6.2.0 introduces the notion of "Title case", making the trio of:
"Lower case" => "Title case" => "Upper case"
Example:
01c6 01c5 01c4
dž Dž DŽ
This means that functions such as "capitalize" are wrong because they make the assumption that "Capitalize" == "Uppercase"
Also, the tests such as:
if(std.uni.isLower(c))
c = std.uni.toUpper(c);
are wrong, as non lower case characters may have upper case representations...