有 Linux 系统下 MATLAB 使用经验的同学应该知道,MATLAB 在渲染某些字体时可谓奇丑无比(如下图)。除此之外,MATLAB 附带的 JRE 还无法找到中文字体,导致语言设为中文时,界面全部显示方框。本文简要说明这些问题的解决方法。
有 Linux 上 Java 软件使用经验的同学应该知道,JRE 的较老版本在 Debian 系发行版下存在次像素字体渲染的问题(参考 这里 的描述)。在较新版本的 JRE 中, 这个问题已经得到了修复;但是 MATLAB 等软件附带的 JRE 较老,没有修复这个问题。因此,更换 JRE 就成了解决此问题的终极方法。
MATLAB 附带的 JRE 版本为 java 1.8.0_202。在 Debian 11 下,Java 8 已经被废弃,无法直接用 apt 安装,所以我首先尝试将 Java 换成 OpenJDK 11 版本的 JRE。只需用 apt 安装 openjdk-11-jre
包,然后在 MATLAB 启动前设置 MATLAB_JAVA
环境变量为 /usr/lib/jvm/java-11-openjdk
即可。
更换后,MATLAB 可以打开,但两三秒中后会崩溃,并提示以下错误信息。查询这个错误信息,发现原因就是 JRE 版本不匹配,必须使用 Java 8 才行。
Inconsistency detected by ld.so: dl-lookup.c: 111: check_match: Assertion `version->filename == NULL || ! _dl_name_match_p (version->filename, map)' failed!
在 Debian 11 下,还有另一种安装 Java 8 的渠道,就是使用 AdoptOpenJDK 提供的 Java 包。我们按照 这里 的说明添加软件源并安装 adoptopenjdk-8-hotspot
软件包,然后设置 MATLAB_JAVA
环境变量为 /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/jre
即可。
替换 Java 后,还需在 MATLAB 首选项的“字体”选项中勾选 Use antialiasing to smooth desktop fonts,并重新打开 MATLAB。经过这些修改,MATLAB 的字体渲染就变得正常了许多,并且可以正常显示中文了。
本作品使用基于以下许可授权:Creative Commons Attribution-ShareAlike 4.0 International License.