I recently had an annoying experience uploading a manuscript to ScholarOne’s Manuscript Central. I learned the hard way that Manuscript Central does not support Type 3 PostScript fonts in PDF documents, and the Python plotting library,
matplotlib, uses Type 3 fonts by default.
So, I had to figure out how to make
matplotlib not use Type 3 fonts in PostScript and PDF outputs. I was surprised to find very little information on the interweb about how to do this.
I finally stumbled across an example
matplotlibrc, and after some searching found two key settings:
ps.fonttype. You have to change these settings from the default of
3 to the alternative
42. You can do this in your
matplotlibrc file with:
pdf.fonttype : 42 ps.fonttype : 42
Or, you can change these settings in your code using:
import matplotlib matplotlib.rcParams['pdf.fonttype'] = 42 matplotlib.rcParams['ps.fonttype'] = 42
matplotlib to use Type 42 (a.k.a. TrueType) fonts for PostScript and PDF files. This allows you to avoid Type 3 fonts without limiting yourself to the stone-age technology of Type 1 fonts.
After specifying this setting, I was able to re-run all my plotting scripts, and update my PDFs (there were a lot of them!) to TrueType fonts without any noticeable difference in the images.
In my googleing, I found other folks had used
matplotlib.rcParams['text.usetex'] = True
matplotlib to produce Type 1 fonts. However, this caused some of the fonts to look quite different in the plots, and also garbled some of the text where my strings conflicted with TeX syntax.