我在标签和图例中渲染希腊字符时遇到了问题,因此我认为更换字体可能会有所帮助。但是,我发现了一个更大的问题 - Matlab似乎根本不尊重我的字体设置。
当然,我已经尝试过
set(gcf, 'FontName', 'Ubuntu')
set(gca, 'FontName', 'Ubuntu')
但也包括像这样的事情
set(findall(gca, 'type', 'text'), 'FontName', 'Ubuntu')
和
set(0,'DefaultAxesFontName', 'Ubuntu')
我也尝试了切换渲染器,使用
set(0, 'DefaultFigureRenderer', 'OpenGL') % also tried 'zbuffer' and 'painters'
我甚至进入图形的属性编辑器,手动更改字体。无论我做什么,字体都带有相同的丑陋等宽字体(请参见下面的图)。此图片通过在菜单栏中使用“另存为...”命令保存,但例如
print -dpng 'fonttest.png'
也不起作用。我已经在终端上通过
fc-list
和在Matlab命令提示符下使用 listfonts
进行了双重检查,确认Ubuntu
字体已安装并可用。我正在运行 Matlab R2012b。如何设置我的图形中的字体?
更新:
如评论所建议,我尝试查看这是否可能是Ubuntu上Java的问题。果然,从OpenJDK切换到Oracle Java有所帮助,但不够好-我可以使用Helvetica和其他几种字体,但无法自由选择我安装的字体。例如,Ubuntu字体不起作用(但在Matlab的主GUI中它确实能够工作 - 我在菜单等中将字体更改为Ubuntu,并在编辑器和命令窗口中使用Consolas,它会正常渲染)。
每当我选择一个不起作用的图形字体时,Matlab都会使用下面截图中显示的内容作为回退。
这里的p
、q
和f
应该是希腊字母π、θ和φ(它们用\pi
等指定),但我猜测字体没有这些字符。第三个图中y轴标签中的奇怪符号是瑞典字母ö - 这不应该是编码问题,因为文件保存为UTF-8,这也是slCharacterEncoding
返回的,所以我认为这也是一个字体问题。
uisetfont()
而不是listfonts
。 - Oleguisetfont()
弹出的对话框中列出了Ubuntu,但选择它并没有改变任何东西。我正在运行Ubuntu 12.04。 - Tomas Aschanprint -dpng 'test.png'
和export_fig
。 - Tomas Aschanfeature DefaultCharacterSet
和feature locale
返回了什么。 - Amro