https://bugs.winehq.org/show_bug.cgi?id=53929
--- Comment #15 from 399989567@qq.com --- (In reply to Nikolay Sivov from comment #7)
I don't see U+1F34A being supported in Noto Sans CJK SC. Might be worth trying e.g. U+1F200.
You are right, U+1F34A are not supported in Noto Sans CJK SC.
But I checked the source code, the problem is not that there is no corresponding glyph of U+1F34A in Noto Sans CJK SC, but that the str accepted by ExtTextOutW is in UTF-16 format, so U+1F34A is converted into 0xD83C and 0xDF4A, a loop is used to traverse the str string, so U+1F34A is considered as two separate characters.
like:
ExtTextOut get WCHAR *str -> {0xd83c,0xdf4a,0}
for(int i = 0; i < count; i++) find_glyph_from_font(font,str[i])
By the way, Using the ScriptString API in wine, the problem can be solved very well, but I don't think this modification is perfect.
We also need to get GetTextExtentPoint32W to return the correct character width when dealing with surrogate pairs