I have been trying to figure out, what is wrong with wine's implementation of CompareString and CompareStringEx functions. From what I can figure out, those functions completely ignore locale passed to them. That alone is not a critical issue, but what causes problems to me, is that it seems always act, as if NORM_IGNORENONSPACE was passed (comparision shows, that A and Ä are same). I did try to rip relavent parts out of wine for test utility and it seems, that A and Ä have same value in collation_table which is used by compare_diacritic_weights. Could it be, that the make_unicode's READ_SORTKEYS_FILE looses relavent information, when generating collation.c file? My perl is even worse than my C, so figuring out those regexes is way beyond me. I did spam https://bugs.winehq.org/show_bug.cgi?id=9583 with my analysis.