Matlab字体在打印或导出时不能正确渲染
我正在尝试制作一个很适合LaTeX文档的matlab图形。 一个已知的问题是,XTickLabel和YTickLabels不使用LaTeX解释器渲染,导致看起来不好的情节。 (注意:我意识到这里有一些修复涉及用文本对象(即format_tics)替换tex标签,但是当绘制多个数字时这些解决方案并非微不足道,并且带有需要大量调整的自己的问题对于每个人物来说)。
我觉得通过改变字体来解决这个问题,而不是替换图中的对象,这样会更加优雅一些。
我下载了LaTex字体的.otf版本,并将其设置为在整个图中显示:
set(0,'defaulttextinterpreter','latex')
set(0,'DefaultTextFontSize', 10)
set(0,'DefaultTextFontname', 'CMU Serif')
set(0,'DefaultAxesFontSize', 10)
set(0,'DefaultAxesFontName','CMU Serif')
在matlab图形窗口中事物看起来很好; 然而当印刷时,事情就会崩溃。
如果我使用“画家”渲染器打印(使用导出GUI或打印命令),字体看起来很有趣且始终不一致。 某些符号将无法正确显示,并且在整个打印图形中出现不同的字体。
print('-depsc','-painters',['InstP.eps'])
如果我切换到zbuffer渲染器,字体变得一致,但还有其他错误。 质量下降,一些文本被遗漏(或被其他文本覆盖)。
print('-depsc','-zbuffer',['InstZ.eps'])
opengl在任何地方都是一团糟。
有人知道为什么这些渲染有这些字体的麻烦吗? 和任何解决方法,让字体正确呈现?
示例代码:
subplot(1,2,1)
imshow(IMG,'XData',XDat,'YData',YDat);
axis image;axis([0 20 -5 5]);
xlabel('$x^*$');
subplot(1,2,2)
imshow(SqImg,'XData',Xs,'YData',Xs);
xlabel('$Phi_B$');
ylabel('$Phi_A$');
axis square;
set(gca,'YDir','normal',...
'XAxisLocation','bottom',...
'YAxisLocation','left',...
'XTick',(0:.5:1).^Exp,'XTickLabel',0:.5:1,...
'YTick',(0:.5:1).^Exp,'YTickLabel',0:.5:1);
print('-depsc','-painters',['InstP.eps'])
print('-depsc','-zbuffer',['InstZ.eps'])
我使用imwrite命令而不是打印命令将数字转换为图像文件,但这不适用于EPS。
fhand = figure();
subplot(1,2,1);
...
I = getframe(fhand)
imwrite(I.cdata,'Inst.png','PNG')
链接地址: http://www.djcxy.com/p/33415.html
上一篇: Matlab Fonts Not Rendering Correctly on Print or Export