ArchLinux下解决deepinwine软件中文黑框问题
1. 简介
随着 deepinwine 的不断完善,类似中文显示等问题也在逐渐减少,目前最新的 deepinwine 应用,如 com.qq.tim.spark 等中文都显示正常,相信到后面这类问题就会完全消失。给 deepin 团队打 call !!!
2. 中文显示黑框
目前遇到两种情况下中文显示黑框,一种是英文环境下中文显示黑框,但中文环境下正常;另一种是中文环境下中文也显示为黑框。
2.1 英文环境导致中文显示黑框
这种情况下,安装的 deepinwine 软件显示中文会有问题,需要修改一下 wine 软件的启动环境,具体修改步骤如下:
- 查找 wine 软件的启动命令,这里以 com.tencent.meeting.deepin 软件(即腾讯会议 wine 版)为例,在开始菜单中找到该软件,右键编辑应用,切换到应用选项卡,找到启动命令,我这里是
"/opt/apps/com.tencent.meeting.deepin/files/run.sh" -u %u
(一般默认安装也会是这个命令)。 - 打开启动脚本
/opt/apps/com.tencent.meeting.deepin/files/run.sh
,找到WINE_CMD
(早期版本)或APPRUN_CMD
(较新版本),我这里是export APPRUN_CMD="/usr/lib/deepin-wine6-stable/bin/wine"
。然后将LC_ALL=zh_CN.UTF-8
添加到变量APPRUN_CMD
中,即表示使用中文环境启动:
1 | export APPRUN_CMD="LC_ALL=zh_CN.UTF-8 /usr/lib/deepin-wine6-stable/bin/wine" |
- 由于命令
WINE_CMD
或APPRUN_CMD
中引入了一条赋值语句,和原来的 wine 命令之间出现了空格,所以可能会影响后面的if
命令,所以需要追踪一下APPRUN_CMD
的使用。比如我这里:
- 首先是
/opt/apps/com.tencent.meeting.deepin/files/run.sh
脚本中没有具体使用到APPRUN_CMD
,而是通过export
导出了APPRUN_CMD
命令,然后再通过START_SHELL_PATH="/opt/deepinwine/tools/run_v3.sh"
变量指定了/opt/deepinwine/tools/run_v3.sh
,并在下文通过$START_SHELL_PATH $BOTTLENAME $APPVER "$EXEC_PATH" "$@"
进行了启动,因此定位到/opt/deepinwine/tools/run_v3.sh
文件。- 打开
/opt/deepinwine/tools/run_v3.sh
发现,有一段代码使用到APPRUN_CMD
变量:
1
2
3 if [ $APPRUN_CMD ]; then
WINE_CMD=$APPRUN_CMD
fi
- 由于
APPRUN_CMD
变量在if
语句中进行判断时没有加上双引号,因此如果APPRUN_CMD
变量中有空格就会导致if
语句判断了两个字符串,从而导致问题。因此需要将$APPRUN_CMD
加上双引号进行判读,具体修改成如下代码:
1
2
3 if [ "$APPRUN_CMD" ]; then
WINE_CMD=$APPRUN_CMD
fi
- 至此修改完毕,重新启动 com.tencent.meeting.deepin 中文显示正常。
2.2 中文环境下中文也显示为黑框
这就是系统本身找不到字体的原因了,因此可以将 Windows 环境下的添加到 deepinwine 环境中。比如这里仍然以 com.tencent.meeting.deepin 软件(即腾讯会议 wine 版)为例:
- 将 Windows 系统下的
C:\Windows\Fonts\msyh.ttc
到~/.deepinwine/Deepin-WeMeet/drive_c/windows/Fonts
文件夹中。 - 修改 com.tencent.meeting.deepin 的 wine 环境中的注册表文件
~/.deepinwine/Deepin-WeChat/system.reg
,修改以下两行指定使用的字体为msyh.ttc
字体:
1 | "MS Shell Dlg"="msyh" |
附录
其实不止在 ArchLinux 下,其他系统下出现类似问题的解决方案也差不多是这两种。参考资料:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 お前はどこまで見えている!
评论
WalineTwikoo