http://bugs.winehq.org/show_bug.cgi?id=59544 Bug ID: 59544 Summary: GDI text rendering broken for UTF-16 surrogate pairs (SMP characters) Product: Wine Version: 11.5 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: win32u Assignee: wine-bugs@list.winehq.org Reporter: Robert-Gerigk@online.de Distribution: --- Created attachment 80591 --> http://bugs.winehq.org/attachment.cgi?id=80591 test program GDI text rendering fails for characters above U+FFFF. Surrogate pairs are rendered as two separate .notdef squares instead of a single glyph. BMP characters render correctly with the same font. To reproduce: display any SMP character (e.g. U+1F600) using a font with glyf outlines covering that range (e.g. Noto Emoji). Each emoji shows as two squares instead of one. The root cause is in dlls/win32u/font.c — the character-to-glyph mapping loops process each WCHAR independently without checking for UTF-16 surrogate pairs. There is currently no surrogate handling code in font.c at all. Affected functions: font_GetGlyphIndices(), get_total_extents(), nulldrv_ExtTextOut(). Real-world impact: WPF applications using emoji or other SMP characters in UI elements (e.g. toolbar labels) show broken rendering under Wine. Patch and Test are ready very soon. Attached: reproducer (smp_emoji_test.cs) + screenshots (Wine vs Windows). -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.