eps2eps,epstopdf,ghostscript错误:/ undefined in --definefont--(来自Matlab的用法)

时间:2014-03-19 19:43:38

标签: bash matlab pdf ghostscript postscript

我目前正在使用eps2eps和epstopdf在Matlab中编写脚本。当我使用来自Matlab的eps2eps或epstopdf时,会发生以下情况:

>> system('eps2eps TEMP97062.ps TEMP97062.eps');
Error: /undefined in --definefont--
Operand stack:
   false   CMR10   --dict:12/21(L)--   Font   definefont   --dict:30/32(L)--   unknownerror
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1    %stopped_push   1900   1   3   %oparray_pop   1899   1   3   %oparray_pop   1883   1   3   %oparray_pop   1771   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   1762   3   3   %oparray_pop   --nostringval--   --nostringval--   1850   3   4   %oparray_pop   --nostringval--
Dictionary stack:
   --dict:1171/1684(ro)(G)--   --dict:0/20(G)--   --dict:81/200(L)--   --dict:1171/1684(ro)(G)--
Current allocation mode is local
Last OS error: No such file or directory
GPL Ghostscript 9.10: Unrecoverable error, exit code 1

BUT: 如果我使用来自bash的eps2eps,一切都可以完美无缺。

这可能是未找到字体的问题吗?

到目前为止我做了什么: 我检查了bash和matlab的环境值,指向字体的那些是相同的。 我将/ usr / share / fonts / Type1 /目录添加到matlab路径中。没有变化。 Google我发现了其他一些未定义的问题。似乎没有任何关联或建议的更改不适用或工作。 我尝试用另一个系统重现问题,它有效。

我的系统:

Arch Linux 64-Bit with KDE (Kernel 3.13.6-1-ARCH)
Ghostscript 9.10
epstopdf 2.21
Matlab 2013a for Unix

是否有任何建议导致此问题以及如何解决此问题?

感谢您的帮助!

//编辑:I uploaded one of the files i'm using

///编辑:我试图从" /home/matze/.fonts"更改GS_PATH; to" /home/matze/.fonts:/ usr / share / fonts / TTF:/ usr / share / fonts / Type1:/ usr / share / fonts"来自Matlab内部。但是,如果我再次打印变量,它仍然具有旧内容。

1 个答案:

答案 0 :(得分:1)

MATLAB system命令设置环境变量的方式与从登录shell或xterm等打开的常规shell不同。尝试显式指定字体的路径:

system('eps2eps -I/usr/share/fonts/Type1/ TEMP97062.ps TEMP97062.eps');

system('eps2eps -sFONTPATH=/usr/share/fonts/Type1/ TEMP97062.ps TEMP97062.eps');

尝试可能包含CMR10的任何其他文件夹,使用:分隔多个路径。


另一种可能的解决方案是修复任何破坏的环境变量。在bash中,检查环境变量GS_LIBGS_LIB_DEFAULTGS_FONTPATHPATH(请参阅如何使用Ghostscript的Section 8.10 Font Look Up)以获取与字体相关的任何内容。然后是update the path used by processes spawned by MATLAB with setenv。例如,

setenv('GS_LIB', [getenv('GS_LIB') ':/usr/share/fonts/Type1/']);
setenv('PATH', [getenv('PATH') ':/usr/share/fonts/Type1/']);
% ... any other relevant variables
system('eps2eps TEMP97062.ps TEMP97062.eps');