[PATCH] make_unicode: Change handling of Turkish i to match Windows
Daniel Lehman
dlehman at esri.com
Fri Sep 30 11:32:54 CDT 2016
>> Since you are modifying the win32 side of the unicode tables please add
>> the correponding tests for LCMapString() to dlls/kernel32/tests/locale.c.
>> It's quite possible that msvcrt doesn't use a win32 backend and has its
>> own locale support.
>>
>I could imagine LCMAP_LINGUISTIC_CASING making a difference here.
Windows' LCMapString behaves differently but only if LCMAP_LINGUISTIC_CASING is specified. if that flag is not specified, it works just like tolower/toupper
Wine's LCMapString currently calls tolowerW and doesn't support the LCMAP_LINGUISTIC_CASING flag. But the current table contains the conversions the LCMAP_LINGUISTIC_CASING flag needs if added in the future
Should I change the fix to something like one of the following? Or just add tests with todo_wine for now?
I could have msvcrt tolower call LCMapString(LOWERCASE)? Then:
- LCMapString(LOWERCASE|CASING) calls the current tolowerW with the conversion
- LCMapString(LOWER) calls tolowerW except on certain characters (like Turkish i)
- msvcrt tolower variants call LCMapString(LOWER)
Or alternatively could there be new tolowerW function that doesn't do the conversion (maybe from a second table make_unicode produces)? Then:
- LCMapString(LOWERCASE|CASING) call the current tolowerW with the conversion
- LCMapString(LOWERCASE) and msvcrt tolower variants call new tolowerW without the conversion
This patch was for the Turkish I but I have 1 other character with the same issue and I'm sure there are more
Thanks
daniel
More information about the wine-devel
mailing list