Matlab 字体在打印或导出时无法正确呈现

Posted

技术标签:

【中文标题】Matlab 字体在打印或导出时无法正确呈现【英文标题】:Matlab Fonts Not Rendering Correctly on Print or Export 【发布时间】:2013-05-30 05:50:30 【问题描述】:

我正在尝试制作一个非常适合 LaTeX 文档的 matlab 图形。一个已知问题是 XTickLabel 和 YTickLabels 不使用 LaTeX 解释器进行渲染,导致绘图看起来很糟糕。 (注意:我意识到有一些修复涉及将 tex 标签替换为文本对象(即format_tics),但是这些解决方案在绘制多个图形时并不简单,并且会带来需要很多问题的自身问题调整每个单独的数字。)

我觉得通过改变字体来解决这个问题,而不是替换图中的对象,更优雅一些。

我downloaded a .otf版本的LaTex字体,并将其设置为在整个图中显示:

    set(0,'defaulttextinterpreter','latex')
    set(0,'DefaultTextFontSize', 10)
    set(0,'DefaultTextFontname', 'CMU Serif')
    set(0,'DefaultAxesFontSize', 10)
    set(0,'DefaultAxesFontName','CMU Serif')

matlab 图形窗口中的东西看起来不错;但是,在打印时,事情就崩溃了。

如果我使用“painters”渲染器进行打印(使用导出 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'])        

【问题讨论】:

我应该注意到Latin Modern Roman字体有完全相同的问题 作为一种解决方法,您可以使用plot2svg (mathworks.de/matlabcentral/fileexchange/…) 创建*.svg 文件,这些文件可以使用IncScape 或Adobe Illustrator 轻松转换为*.eps 文件交换中的其他解决方法选项是export_fig,并且由于您使用的是 LaTeX,所以matlab2tikz。这些解决方案中的后者将使您的图形真正适合 LaTeX 字体/环境。 【参考方案1】:

我使用 imwrite 命令而不是 print 命令将图形转换为图像文件,但这不适用于 EPS。

fhand = figure();
subplot(1,2,1);
...
I = getframe(fhand)
imwrite(I.cdata,'Inst.png','PNG')

【讨论】:

以上是关于Matlab 字体在打印或导出时无法正确呈现的主要内容,如果未能解决你的问题,请参考以下文章

导出为 pdf 时如何正确呈现印地语?

OpenType 字体无法在 iOS 上正确呈现

使用 Open Sans 字体时,Chrome 在首次打印时无法正确打印

字体(Myanmar3)无法在 iText 中正确呈现

如何更改数据表中的导出 PDF 字体大小?

使用 TailwindCSS 时,Google 字体无法在移动设备上呈现