————0615更新————
经过进一步研究,对这个问题算是有了更深的理解……
首先,在改变默认字体前,可以先看一下MATLAB自己默认的是什么字体:
get(0,'defaultAxesFontName');
然后我发现自己电脑上的R2017a默认字体是Helvetica。搜了一下发现这个字体不支持中文!这个原来就是问题所在。然而为什么要把默认设成这个字体呢?我又找到了MATLAB官方自问自答的两个问题:
大概看了一下,其中一个原因是用户在MATLAB里修改后的默认字体与系统里的默认字体名称不一致,导致它找不到字体文件,就被迫换成Helvetica了。另外,这个默认字体的选择好像与MATLAB选择的打印驱动(painter driver)也有关。然而我现在还并没发现究竟是哪种情况,总之尽管每次都输了改变默认字体,下次打开新的MATLAB窗口还是会回到起点。第一个链接中,官方给了一种可以算是一劳永逸的方法,就是将
set(0,'defaultAxesFontName', ''); %为某种支持中文的字体
写在一个startup文件中,再将其保存在MATLAB默认工作路径下,这样每次启动前就会运行这行代码,就不用手动再输一遍了。然而这又有一个麻烦之处(至少对我而言)就是每次打开后的工作路径又固定不动了……不过这个是目前能得到的best solution了。
感兴趣的知友可以继续研究一下。
————0403更新————
答主回来打自己脸了 现在发现这个方法也不能做到一劳永逸,打算之后研究一下从修改字体文件入手…
————原答————
首先感谢上面几位答主提供的思路, 我的2017a前几天更新了一下也出现这个问题. 昨晚测试了一下, 用
title(gca,'Fontname',''); %为某种支持中文的字体
确实可以解决问题, 可能是因为更新以后GUI的默认字体不支持中文了. 然而每次画图时都要添加这一行有点麻烦, 因此可以直接将GUI默认字体设定为需要支持中文的字体:
set(0,'defaultAxesFontName', ''); %为某种支持中文的字体
我用的是win10系统默认的字体"Microsoft YaHei UI". 当然, 几位答主提供的"Monospaced"也可以用.
另外, 之前搜索还看到一种解决方案, 是在Preference->Fonts->Custom里面修改字体, 我试了下不管用, 可能与版本有关. 但是也有成功的例子, 因此也不妨一试.