Я использую matplotlib для создания PDF-файлов. Тем не менее, даже самые простые цифры дают относительно большие файлы, MWE ниже создает файл размером почти 1 МБ. Мне стало известно, что большой размер файла связан с тем, что matplotlib полностью встраивает все используемые шрифты. Поскольку я собираюсь создать довольно много графиков и хотел бы уменьшить размеры файлов, мне интересно:
Основной вопрос:
Есть ли способ заставить matplotlib встраивать шрифт подмножества вместо полных шрифтов? Я также был бы в порядке, если бы вообще не включал шрифты.
Вещи, рассмотренные на данный момент:
- Редактор векторной графики можно легко использовать для экспорта PDF-файла, включая подмножества шрифтов (а также вообще не включая шрифты), но необходимость выполнять этот шаг для каждого файла (редакции) кажется излишне утомительной.
- Точно так же я читал о постобработке PDF-файлов (например, с использованием Ghostscript), хотя усилия кажутся сопоставимыми.
- Я попытался установить «pdf.fonttype» = 3, что действительно создает файлы значительно меньшего размера. Тем не менее, я хотел бы, чтобы текст можно было изменять в редакторах векторной графики, что, похоже, не работает в этом случае (например, знаки минус не будут сохранены как текст).
Поскольку легко, хотя и трудоемко, создавать файлы со встроенными подмножествами с помощью внешнего программного обеспечения, можно ли как-то добиться этого непосредственно в matplotlib? Любая помощь будет принята с благодарностью.
MWE
import matplotlib.pyplot as plt #Setup
import matplotlib as mpl
mpl.rcParams['pdf.fonttype'] = 42
mpl.rcParams['mathtext.fontset'] = 'dejavuserif'
mpl.rc('font',family='Arial',size=12)
fig,ax=plt.subplots(figsize=(2,2)) #Create a figure containing some text
ax.semilogy(1,1,'s',label='Text\n$M_\mathrm{ath}$')
ax.legend()
fig.tight_layout()
fig.savefig('test.pdf')
Среда: matplotlib 3.1.1