http://bugs.winehq.org/show_bug.cgi?id=59252 Bug ID: 59252 Summary: FL STUDIO piano roll - generate chord progressions: DirectWrite Font Fallback Not Working for Unicode Music Symbols Product: Wine Version: 11.0 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: dwrite Assignee: wine-bugs@list.winehq.org Reporter: nen24t@gmail.com Distribution: --- Created attachment 80169 --> http://bugs.winehq.org/attachment.cgi?id=80169 fl studio piano roll - generate chord progressions # Wine Bug Report: DirectWrite Font Fallback Not Working for Unicode Music Symbols ## Summary DirectWrite font fallback (FontLink) does not work for Unicode music symbols (U+266D ♭, U+266E ♮, U+266F ♯) in FL Studio 2025. These symbols render as empty rectangles (tofu) instead of the correct glyphs, even though Segoe UI Symbol font is installed and FontLink is configured. ## Environment - **Wine Version:** wine-11.0 - **OS:** Ubuntu 24.04.3 LTS (Noble Numbat) - **Architecture:** 64-bit (WINEARCH=win64, wow64 mode) - **Application:** FL Studio 2025 (FL64.exe) ## Steps to Reproduce 1. Install FL Studio 2025 under Wine 2. Install Segoe UI Symbol font (`seguisym.ttf`) to `~/.wine/drive_c/windows/Fonts/` 3. Register font in registry under `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Fonts` 4. Configure FontLink for fonts used by FL Studio (Open Sans, Roboto Condensed, Ubuntu Condensed, etc.) 5. Open FL Studio → Piano Roll → Tools → Generate Chord Progression 6. Observe chord names with accidentals (e.g., C#m, Bbm, F#m) ## Expected Behavior Chord names should display with proper music symbols: - C♯m (C sharp minor) - B♭m (B flat minor) - F♯m (F sharp minor) This works correctly on native Windows. ## Actual Behavior Chord names display with empty rectangles (tofu boxes) instead of ♯ and ♭ symbols: - C□m - G□m - F□m ## Analysis FL Studio uses DirectWrite for text rendering (confirmed via `WINEDEBUG=+dwrite`). The application uses condensed fonts (Open Sans Condensed, Roboto Condensed, Ubuntu Condensed) that do not contain the Unicode music symbols (U+266D, U+266E, U+266F). Under Windows, DirectWrite's font fallback mechanism (FontLink) automatically substitutes missing glyphs from Segoe UI Symbol. Under Wine, this fallback does not occur. ### Verified Configuration FontLink registry entries were added: ``` HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink "Open Sans Condensed"="SEGUISYM.TTF,Segoe UI Symbol" "Roboto Condensed"="SEGUISYM.TTF,Segoe UI Symbol" "Ubuntu Condensed"="SEGUISYM.TTF,Segoe UI Symbol" ``` Segoe UI Symbol font is correctly loaded by Wine (confirmed via `WINEDEBUG=+font`): ``` trace:font:unix_face_create parsed font names family_name L"Segoe UI Symbol" trace:font:insert_face_in_family_list Adding face L"Segoe UI Symbol" in family L"Segoe UI Symbol" ``` ### Workarounds Attempted (All Failed) 1. ✗ Installing Segoe UI Symbol to Wine fonts folder 2. ✗ Registering font in Windows registry 3. ✗ Configuring FontLink for all relevant fonts 4. ✗ Patching FL Studio fonts with fontforge to include music symbols (breaks QuickFontCache) 5. ✗ Font substitution via `HKEY_CURRENT_USER\Software\Wine\Fonts\Replacements` 6. ✗ Setting Windows version to Windows 11 7. ✗ Enabling DirectWrite GdiInterop ## Technical Details ### Relevant Wine Debug Output ``` WINEDEBUG=+dwrite wine FL64.exe 2>&1 | grep glyph 0380:trace:dwrite:dwritefontface_GetGlyphIndices ... 0380:trace:dwrite:dwritefontface_GetDesignGlyphMetrics ... ``` Wine's DirectWrite receives glyph requests but does not perform fallback to FontLink fonts for missing glyphs. ### Unicode Code Points - U+266D: MUSIC FLAT SIGN (♭) - U+266E: MUSIC NATURAL SIGN (♮) - U+266F: MUSIC SHARP SIGN (♯) ### FL Studio Font Configuration FL Studio bundles its own FreeType DLL (`freetype_x64.dll`) and QuickFontCache system. However, the actual text rendering goes through Windows DirectWrite API, which Wine should handle. ## Suggested Component `dlls/dwrite` - DirectWrite font fallback / FontLink implementation ## Related Wine Bugs **Bug #53739** - "Text does not show in QQ UI and Enterprise WeChat UI" https://bugs.winehq.org/show_bug.cgi?id=53739 This bug describes the same root cause - DirectWrite font fallback not working correctly. The problematic commit was identified as: - `dwrite: Remove old system fallback logic.` - Commit ID: `26e717c5653d2c6fcb29846e7d22aa97e37048e1` Problematic code in `dlls/dwrite/analyzer.c`: ```c data = fallback->data.count == ~0u ? &system_fallback : &fallback->data; ``` The `system_fallback` does not correctly provide fallback fonts for missing glyphs. ## References - Wine Bugzilla: Related to Bug #53739 - FL Studio runs under Wine: https://appdb.winehq.org/objectManager.php?sClass=application&iId=178 ## Attachments Screenshot showing the issue is available in the project folder. -- 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.