Skip to content

[Bug]: Proton runner updates skip Proton font symlink maintenance and can leave broken font registry entries #4773

Description

@w568w

Describe the bug

When Bottles uses a Proton build as a runner, it leaves relative Windows font registry values unresolved:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts
  Tahoma (TrueType)      = tahoma.ttf
  Tahoma Bold (TrueType) = tahomabd.ttf

In my case, this caused a reproducible QtWebEngine crash in an existing bottle after every Proton update:

[ERROR:platform_font_skia.cc(343)] Could not find any font: Tahoma, sans. Falling back to the default
(Crashed at Qt5WebEngineCore.dll+0x28684ef)

which is a null pointer dereference from here, since even the default fonts resolve to non-existent paths.

To Reproduce

  1. Create a 64-bit Gaming bottle using a Proton runner that ships files/share/wine/fonts/tahoma.ttf. For example, DWProton;
  2. Update the proton version, let Bottles perform its normal runner/prefix update;
  3. Query HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts for Tahoma (TrueType), which should point to a non-existent relative path tahoma.ttf (i.e., drive_c/windows/Fonts/tahoma.ttf).

Package

Flatpak from Flathub

Distribution

Arch Linux

Debugging Information

Version: '66.9'
DE/WM: /usr/share/wayland-sessions/plasma.desktop
Display:
    X.org: true
    X.org (port): :0
    Wayland: true
Graphics:
    vendors:
        amd:
            vendor: amd
            envs:
                DRI_PRIME: '1'
            icd: /usr/share/vulkan/icd.d/radeon_icd.json
    prime:
        integrated: null
        discrete: null
    Vulkan: true
Kernel:
    Type: Linux
    Version: 7.2.2-1-cachyos
Disk:
    Total: 273670471680
    Free: 1091518464
RAM:
    MemTotal: 30.6GiB
    MemAvailable: 11.2GiB
Bottles_envs: null

Troubleshooting Logs

No obvious log.

Additional context

A quick workaround is manually replacing the font path values to absolute path (e.g., Z:\home\user\path\to\proton\files\share\wine\fonts\tahoma.ttf) in the registry (or just copy them to windows/Fonts/) after each update.

Wine refused to support an alternative font prefix, like /run/host/fonts.

So Proton has a create_fonts_symlinks() method to symlink them to windows/Fonts/, which is skipped by Bottles, causing this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions