http://bugs.winehq.org/show_bug.cgi?id=59252 --- Comment #13 from gng <nen24t@gmail.com> --- Update: Root Cause Found and Workaround Available After extensive debugging with WINEDEBUG=+dwrite, I've discovered the actual root cause of this issue. === ROOT CAUSE === The problem is NOT with Wine's font fallback configuration. The issue is: 1. Segoe UI (segoeui.ttf) contains U+266F (♯ sharp) but does NOT contain U+266D (♭ flat) 2. FL Studio uses low-level DirectWrite APIs that bypass font fallback entirely FL Studio calls: - IDWriteFontFace::GetGlyphIndices (139 calls observed) - IDWriteFactory::CreateGlyphRunAnalysis (588 calls observed) FL Studio does NOT call: - IDWriteTextLayout (never used) - IDWriteFontFallback::MapCharacters (never used) This means FL Studio asks Segoe UI directly for the flat glyph, gets nothing (glyph index 0), and renders tofu - without ever triggering Wine's font fallback mechanism. The patches to system_fallback_config[] in dlls/dwrite/analyzer.c are correct but have no effect for this application because the fallback code path is never executed. === WORKAROUND === Since FL Studio bypasses font fallback, the solution is to add the missing glyph directly to Segoe UI. I've created a fix script and published it on GitHub: https://github.com/giang17/flstudio-wine-font-fix The repository contains: - fix-flat-symbol.sh - All-in-one bash script - patch-segoeui.py - Python script using fonttools - Screenshots (before/after) - Full documentation Usage: git clone https://github.com/giang17/flstudio-wine-font-fix.git cd flstudio-wine-font-fix ./fix-flat-symbol.sh ~/.wine This patches segoeui.ttf in the WINEPREFIX (creates a backup automatically). After applying this workaround, all flat symbols display correctly in FL Studio. === IMPLICATIONS FOR WINE === This raises a question: Should Wine's DirectWrite implementation provide automatic font fallback in GetGlyphIndices when a glyph is not found? On native Windows, I'm not certain whether GetGlyphIndices triggers automatic fallback or if applications are expected to use IDWriteFontFallback::MapCharacters explicitly. If automatic fallback in GetGlyphIndices is expected Windows behavior, that would be a separate bug worth investigating. Thanks for looking into this! -- 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.