MATLAB Answers

Jonas
2

bug: extra space before greek letter if rendered with painters

Asked by Jonas
on 1 Apr 2015
Latest activity Commented on by Aras
on 7 Feb 2019
The following code creates a minimal working example to reproduce the bug in Matlab 2015a on Linux with export_fig 06/03/15 and ghostscript 9.10.
plot([2014 2015 2016], [0 1 0])
xlabel('MATLAB (\mu)')
ylabel('Space-bugs (\mu)')
title('Number of wrong spaces in MATLAB')
export_fig('/tmp/mu_bug_space' ,'-pdf','-png','-eps', '-painters') % bug
export_fig('/tmp/mu_bug_nospace' ,'-pdf','-png','-eps', '-opengl') % OK
Any ideas, where it comes from and how to fix it?

  0 Comments

Sign in to comment.

7 Answers

Answer by John O'Toole on 3 Apr 2018

2018 and still not fixed?

  0 Comments

Sign in to comment.


Answer by Yair Altman on 1 Apr 2015
Edited by Walter Roberson
on 6 Mar 2016

I answered this on the Github forum, where all export_fig issues should be discussed (not here).

  1 Comment

Thank you very much for your extremely fast answer and your code example. I will report the bug now to Mathworks as suggested and hope it will be fixed before 2015b. Edit: Case Number 01306074

Sign in to comment.


Answer by Christoph on 29 Aug 2018

I'd love to have this fixed!!! Really annoying, just for this bug I have to open a vector graphics editor.

  0 Comments

Sign in to comment.


Answer by Christoph on 7 Feb 2019

To follow up on this:
  • I contacted support, as suggested by Ingrid Tigges
  • I got a prompt reply:
"Please note that the underlying issue has been fixed as of MATLAB R2017b:
If you are working on Linux systems:
This bug is present in MATLAB R2016a and occurs when saving a figure as a vector graphics file (e.g. EPS, PDF, SVG). A workaround noted in our knowledge database is to use LaTeX as the text interpreter, rather than the default text interpreter (TeX).
Please Note: This forces the use of the default LaTeX font, and also requires LaTeX's dollar sign ($) delimiters to be used when typesetting text.
Use the following command to set the default text interpreter to LaTeX globally.
>> set(groot,'DefaultTextInterpreter','latex');
Alternatively, to set the text interpreter locally for a specific text object, you can set the "Interpreter" property value as in the example below:
f = figure; plot(1:10); xlabel('This is some really really long text string for a label. $C_L$', 'Interpreter', 'latex'); print(f,'-dpdf','image.pdf');
Please Note: At the time of writing, the EBR link below suggests switching the "Renderer" property of a figure to "opengl" as a workaround for this issue. However, this forces a rasterization process to occur, which essentially embeds a bitmap version of the figure within a vector graphics file that is pixelated and does not scale as expected.
The workaround however is quite crappy: Matlab seems to have an agenda to reduce support for LaTeX interpreter, and as of now, only the default font is supported -- which is rarely acceptable if you want to submit the stuff somewhere.
Secondly, the information that the "underlying issue has been fixed as of MATLAB R2017b" is simply wrong. I installed 2018b, and the underlying issue is not fixed at all.
@Aras, can you maybe specify what exactly the "Copy Options" are? I can't find them (using 2018b on a linux machine). Also, is the "print preview" size different from that accessible via
fig.PaperPosition = [];
fig.PaperSize = [];
? And is it possible to control the size you are referring to with code instead of clicking on print preview?
Cheers,
Christoph

  1 Comment

I am using MATLAB R2018b on Windows 10 x64.
I cannot reproduce the error by saving the figure as .eps or .pdf using the print function or Save As command.
The problem I have is incorrectly positioned text in a figure when I set its size too big and copy-paste it into Microsoft Office. I attached the sample document where I copied the figure to Word at two different sizes and saved it as PDF for convenience. The large figure has all the text incorrectly positioned. Greek letters are shifted more than standard text, so the "pi" symbol does not appear.
@Christoph :
The properties that I adjust using the Print Preview window are fig.PaperPosition and fig.PaperSize.
Copy Options is a page in MATLAB Preferences where you can find the option to copy the figure (to paste into other programs) either with the size of the figure window or with the size stored in PaperPosition and PaperSize.

Sign in to comment.


Answer by Ingrid Tigges on 29 Apr 2015

There is a workaround for this issue. Due to the disadvantages of the workaround, please contact technical support in order to get the workaround.

  2 Comments

Sorry, but this answer is somewhat disappointing.
@ingrid Tigges - your answer is not very helpful, can you include the "workaround" in this thread so others can benefit from the "fix"?

Sign in to comment.


Answer by Jonas Stein on 5 Mar 2016

Update: Unfortunately the bug was not fixed in 2015b and it is still present even in 2016a.

  0 Comments

Sign in to comment.


Answer by Aras
on 19 Sep 2018
Edited by Aras
on 19 Sep 2018

I realized that this problem occurs when the size of the figure in Print Preview is large (when "Match figure screen size" is unselected in Copy Options.)
So, a workaround that works for me is to reduce the width, height, line width, and font size by the same ratio in the Print Preview options before copying or exporting the figure.
The workaround in the submitted bug report does not work for me in MATLAB R2018a on Windows 10 when I copy the figure to Microsoft Word or Powerpoint as vector graphics.

  0 Comments

Sign in to comment.