在我的 Kubuntu 上,Wine 应用程序加载速度非常慢。众所周知,应该自动启动 Wine 服务器以持续运行:
wineserver -p
这显著减少了每个程序的加载时间,但这还不够:在我相当现代的计算机上,第一次启动一个简单的 wine 应用程序后大约需要一秒钟,远远超出了它应该的时间。
在网上搜索解决方案主要得到了 oiaohm 的答案这个 WineHQ 论坛问题(另请参阅相关的重复错误报告这里和这里)。oiaohm 提出的第一个问题是安装了“太多”字体,而 wine 生成的字体列表很长,导致启动时间过长。事实证明,字体问题确实是 Wine 在我的计算机上启动缓慢的原因。Kubuntu 默认安装了许多字体,例如,广泛的 Noto 字体系列。仅因为字体对 Wine 的影响而删除字体是没有意义的。即使有人想删除某些字体,由于依赖关系,通过删除它们的软件包来实现这一点并不总是可行的。在他的回答中,oiaohm 建议使用自定义字体配置文件,但没有详细说明。
因此,我正在寻找一些解决方案,最好是“自然的”解决方案。以下是我找到的解决方案作为答案。热烈欢迎提出更好的建议。
答案1
这个答案的目的是根据我的经验给出上面提到的 oiaohm 解决方案的完整细节。
Fontconfig 是系统范围的字体配置库。请参阅以下手册页以了解下面进行的字体配置自定义的说明。
man fonts-conf
这个想法是创建一个自定义字体配置,并让 Wine 使用它来代替默认字体。我建议的步骤如下:
- 查出哪些字体是真正需要的通过 Wine 程序。一个合理的方法是运行
lsof -p [PID of Wine application] | grep ttf
(otf 也是如此) 来管理您使用的所有 Wine 应用程序。 - 创建一个自定义字体配置目录:
mkdir ~/.wine/myfonts
- 创建一个自定义字体缓存目录:
mkdir ~/.wine/myfonts-cache
- 创建一个自定义字体配置文件在自定义字体配置目录中。通过复制系统的默认文件:
cp /etc/fonts/fonts.conf ~/.wine/myfonts
并按如下方式编辑它来实现。- 在字体目录列表中,将所有(或大多数) <dir> 元素替换为指向所需字体的特定目录的元素(参见步骤 1)。例如,输入
<dir>/usr/share/fonts/truetype/unfonts-core</dir>
。 - 在字体缓存目录列表中,删除所有 <cachedir> 元素并仅放置自定义字体缓存目录:
<cachedir>~/.wine/myfonts-cache</cachedir>
。 - 重要的是,在两个列表中删除带有西大哥前缀,因为这些需要更多步骤来定制。
- 在字体目录列表中,将所有(或大多数) <dir> 元素替换为指向所需字体的特定目录的元素(参见步骤 1)。例如,输入
- 您的自定义字体配置文件有一个 <include> 元素,除非更改,否则该元素包含值“conf.d”。因此,请在您的自定义字体配置目录中创建一个以此名称命名的目录,例如
mkdir ~/.wine/myfonts/conf.d
。然后,将以下内容复制到此目录附加配置文件位于原始 conf.d 目录中的您选择保留的字体所需的文件。例如,cp /etc/fonts/conf.d/90-fonts-unfonts-core.conf ~/.wine/myfonts/conf.d
。 - 环境变量更改:Wine 应用程序应将 FONTCONFIG_FILE 和 FONTCONFIG_PATH 的值分别设置为您的自定义字体配置文件和自定义字体配置目录来运行。例如,假设您安装了 Wine 应用程序 XYZ。单击应用程序启动器,键入 XYZ,右键单击,选择“编辑应用程序”,然后在“应用程序”选项卡中,将“命令”字段更改为类似
或者,找到文件 XYZ.desktop 并直接更改它。这应该对每个 Wine 应用程序都执行。实际上,您只需要在 Wine 服务器加载后第一次运行 Wine 应用程序时设置环境变量即可。env FONTCONFIG_FILE="~/.wine/myfonts/fonts.conf" FONTCONFIG_PATH="~/.wine/myfonts" wine C:\\windows\\command\\start.exe /Unix ~/.wine/dosdevices/c:/users/Public/Start\ Menu/Programs/XYZ.lnk
- 生成字体缓存使用相同的环境变量来配置您的自定义字体。例如:
export FONTCONFIG_FILE=~/.wine/myfonts/fonts.conf export FONTCONFIG_PATH=~/.wine/myfonts fc-cache -fv
- 最后,要么重启,要么重启 Wine 服务器:
wineserver -k wineserver -p
您可以在以下注册表项中检查 Wine 实际处理的字体列表。请确保使用所需的环境变量运行 regedit,或者在使用这些环境变量运行另一个 Wine 应用程序后运行。
HKEY_CURRENT_USER\Software\Wine\Fonts\Cache