As MSDN says,
TheÂ
PolyTextOut
 function draws several strings using the font and text colors currently selected in the specified device context.
The article also mentions ExtTextOut
 as a simpler sister function:
To draw a single string of text, the application should call theÂ
ExtTextOut
 function.
It looks like the API is not so Unicode friendly. Code as simple as
PolyTextOut(L"Мама мыла раму");
PolyTextOut(L"Mother washed window");
PolyTextOut(L"ママソープフレーム");
PolyTextOut(L"დედრსáƒáƒžáƒœáƒ˜áƒ¡ კáƒáƒ კáƒáƒ¡áƒ˜");
ExtTextOut(L"Мама мыла раму");
ExtTextOut(L"Mother washed window");
ExtTextOut(L"ママソープフレーム");
ExtTextOut(L"დედრსáƒáƒžáƒœáƒ˜áƒ¡ კáƒáƒ კáƒáƒ¡áƒ˜");
Outputs correctly in case of ExtTextOut
, while PolyTextOut
 stumbles on strings in Japanese, Georgian. All right, so why did it do Russian?
Cody Gray from StackOverflow comments:
Even though Visual Studio and non-ASCII characters is a known separate problem, I re-checked the test code in my system upgraded to Windows 8, Windows 8.1 and then to Windows 10 in the meantime since the post date. The problem is still present (same symptoms) in Windows 10 at the time of this comment.