Wine 字体缺失是麒麟系统中 Windows 软件中文乱码的主因,需将 SimSun 字体复制至 Wine 虚拟 C 盘 fonts 目录,并通过 regedit 强制映射关键字体为 SimSun,再在 winecfg 中设置合适 DPI 值以确保正确渲染。

确认 Wine 字体缺失是乱码主因
麒麟系统中 Wine 运行 Windows 软件时出现方块、>、问号或文字重叠,基本可断定是虚拟 Windows 环境内缺失中文字体文件,Wine 无法匹配到可用字形。这和系统级中文字体是否安装无关——哪怕桌面菜单显示正常,Wine Prefix 里仍是空的。
把 SimSun 字体复制进 Wine 虚拟 C 盘
方法一:直接拖入(推荐新手)
启动任意一个 Wine 程序(如 wine notepad),在弹出的文件选择框中点击“浏览”,此时会打开 Wine 的虚拟 C 盘根目录(路径显示为 Z:)。导航至 Z:windowsonts,将已下载好的 【simsun.ttc 或 simsun.ttf】 文件直接拖入该文件夹即可。Wine 1.8 及以上版本会自动识别,无需重启。
方法二:命令行复制(适合批量操作)
终端执行:cp ~/Downloads/simsun.ttc ~/.wine/drive_c/windows/fonts/。注意 【~/.wine 是默认 Wine Prefix,若使用了 WINEPREFIX 环境变量,路径需同步替换】。
用 regedit 强制映射中文字体
这一步绕过 Wine 自动字体探测逻辑,直指核心:让所有关键 UI 字体都指向 SimSun。
第一步:新建文本文件,命名为 zh.reg,内容如下:
REGEDIT4<br>[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]<br>"MS Shell Dlg"="SimSun"<br>"MS Shell Dlg 2"="SimSun"<br>"Tahoma"="SimSun"<br>"Arial"="SimSun"<br>"Times New Roman"="SimSun"
第二步:保存为 UTF-8 编码(用 gedit 或 vscode,禁用 BOM);
第三步:终端执行 regedit zh.reg。命令无输出即表示成功写入注册表。
调整 DPI 避免字体渲染模糊
Wine 默认按 96 DPI 渲染,但高分屏下会拉伸失真,导致中文笔画粘连、边缘发虚。
打开终端,运行 winecfg → 切换到“图形”选项卡 → 勾选“覆盖屏幕分辨率” → 将 DPI 值设为 【120】(2K 屏)或 【144】(4K 屏)。不勾选此项,前面所有字体配置都可能白做。
验证并清理残留干扰项
有些用户提前装过 wqy-microhei 或手动改过 fontconfig,反而会让 Wine 拿错字体链。
执行:rm -f ~/.wine/user.reg ~/.wine/system.reg,然后重新运行 winecfg 生成干净注册表;
再立即运行一个带中文界面的 Wine 程序(如 notepad),观察“文件”“编辑”等菜单是否正常显示汉字——显示正常即完成。

















