matlab eps 字体用AI打开乱码的解决
Posted 淘淘麻麻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab eps 字体用AI打开乱码的解决相关的知识,希望对你有一定的参考价值。
(1)投IEEE文章的同学可以看看
Font Helvetica is not embedded,一个字体问题花费了我两三个小时,解决方法记录一下,方便后续自己查看,也方便出现同样问题的同学少走弯路。
IEEE要求所有投稿的PDF文档要通过IEEE PDF eXpress service检查,而这个系统要求嵌入所有的字体才可以提交。
我的文档有一个Helvetica字体没有嵌入,一开始以为是字体没有安装的原因,于是下载了全套的Helvetica字体装上,结果发现还是不行,在网上找了蛮久,最后发现这些Helvetica字体全都来自matlab保存的eps图片中,于是用Notepad++打开eps文件,并把其中的Helvetica全部替换成为Arial,再次生成PDF文件,发现所有的字体都能够embedded了,通过了检查。
http://blog.csdn.net/u013829933/article/details/51763811
(2)matlab论坛版主 math
在你导出的图片里面,不要使用legend,或者坐标轴坐标。
在latex文件里:
\begin{figure}[bt]
\centering
\begin{overpic}[width=3.35in]{image path}
\put(9,30){\rotatebox{-45}{\footnotesize{anything}}}
\put(50,24){\rotatebox{23}{\footnotesize{anything}}}
\put(14,70){\footnotesize{anything}}
\put(13,62){\footnotesize{anything}}
\put(34,56){\rotatebox{22}{\footnotesize{anything}}}
\put(50,10){\rotatebox{22}{\footnotesize{anything}}}
\end{overpic}
\caption[]{\emph{figure caption here}}
\label{fig_label}
\end{figure}
在latex文件里:
\begin{figure}[bt]
\centering
\begin{overpic}[width=3.35in]{image path}
\put(9,30){\rotatebox{-45}{\footnotesize{anything}}}
\put(50,24){\rotatebox{23}{\footnotesize{anything}}}
\put(14,70){\footnotesize{anything}}
\put(13,62){\footnotesize{anything}}
\put(34,56){\rotatebox{22}{\footnotesize{anything}}}
\put(50,10){\rotatebox{22}{\footnotesize{anything}}}
\end{overpic}
\caption[]{\emph{figure caption here}}
\label{fig_label}
\end{figure}
http://www.ilovematlab.cn/thread-215995-1-1.html
在IEEE论文(包括部分会上传到IEEE Xplore的会议论文)投稿时,要求将论文上传到IEEE PDF Express中进行验证,验证文章是否符合IEEE的相关规定。当时出现的错误是:
Font Time-Roman is not embedded (47x)
Font Helvetica is not embedded (4x)
我当时的论文是latex生成的,按理不会产生这类问题。后来查到原因是因为我所用的图片是matlab直接导出的eps格式的图形。
通过网上查找,找到了如下一种解决方法:解决Matlab图片导出为eps格式的字体嵌入问题
但是,该方法略显复杂。我采用的方法是:
通过matlab做好图形后,通过点击图形界面的edit->copy figure,然后将该图形贴到visio中,再将其打印成pdf格式,最后再通过Adobe Acrobat将其转换为eps格式,这样出来的图形就不会有这个问题了,并且新的文档也能通过IEEE PDF Express的验证。
(4)http://www.ilovematlab.cn/thread-14152-1-1.html
多谢math帮助,我是这么解决的(不用修改fig文件的字体就可以在pdf里将所有字体embeded):
其实很简单,先生成ps文件,然后在命令行输入:
gswin32c -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dCOMPatibilityLevel=1.4 -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -sOutputFile=yourfile.pdf yourfile.ps
生成的pdf文件就全部都能embed了,哈哈
原贴如下:
http://alephnk.spaces.live.com/Blog/cns!29897E24580CA11!556.entry
Latex文件转成pdf后的字体嵌入问题的解决
一般情况下,字体都是能够嵌入的。但是如果论文里边用了matlab生成的eps图,则有问题了。一般matlab默认的字体是Helvetica,这个一般的windows系统上是没有这个字体的,而eps文件是ascii文件,对于字体,里边只是给出字体的名称。这样就导致转换成pdf的时候没有办法嵌入该字体,往往导致ieee eXplore检验不合格。
只能硬改了,将eps文件中的
%%IncludeResource: font Helvetica
/Helvetica /WindowsLatin1Encoding 120 FMSR
第二行改为
/ArialMT /WindowsLatin1Encoding 120 FMSR
ArialMT是系统上有的字体。而且改了之后,重新对tex文件用latex命令转换成dvi,再用dvi2pdf命令转换成pdf,则字体都能够嵌入了。
有的论文中贴的不是eps图片而是emf图片,这个格式可能不涉及字体的问题,emf文件不是ascii文件而是二进制文件,估计字体都融合到文件里边了,emf文件本身就比eps的要大很多。
// 昨天跟人讨论,有一个方法,也可以在dvi2pdf无法嵌入的时候用。就是生成pdf之后,再用adobe acrobat打开,然后重新打印成pdf,在这个时候选择一下要嵌入的字体。
再附:
先由dvi生成ps文件,然后在命令行下用gswin32c命令来生成pdf文件,效果更好:
gswin32c -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite
-dPDFSETTINGS=/printer -dCOMPatibilityLevel=1.4
-dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true
-sOutputFile=youfile.pdf yourfile.ps
该命令跟了一大堆参数,直接拷贝到命令行窗口即可。这种做法的好处是什么字体都嵌入了,包括Helvetica(URW捐给GS的Helvetica)、Times-Roman等等。【水木社区tex版的snoopyzhao提供】
另外,http://www.grassbook.org/neteler/highres_pdf.html 也提供了解决该问题的做法,可做参考【水木社区tex版hashhsah提供】,或者在matlab中用octave画图,该命令调用gnuplot【水木社区tex版的realwhz提供】
其实很简单,先生成ps文件,然后在命令行输入:
gswin32c -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dCOMPatibilityLevel=1.4 -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -sOutputFile=yourfile.pdf yourfile.ps
生成的pdf文件就全部都能embed了,哈哈
原贴如下:
http://alephnk.spaces.live.com/Blog/cns!29897E24580CA11!556.entry
Latex文件转成pdf后的字体嵌入问题的解决
一般情况下,字体都是能够嵌入的。但是如果论文里边用了matlab生成的eps图,则有问题了。一般matlab默认的字体是Helvetica,这个一般的windows系统上是没有这个字体的,而eps文件是ascii文件,对于字体,里边只是给出字体的名称。这样就导致转换成pdf的时候没有办法嵌入该字体,往往导致ieee eXplore检验不合格。
只能硬改了,将eps文件中的
%%IncludeResource: font Helvetica
/Helvetica /WindowsLatin1Encoding 120 FMSR
第二行改为
/ArialMT /WindowsLatin1Encoding 120 FMSR
ArialMT是系统上有的字体。而且改了之后,重新对tex文件用latex命令转换成dvi,再用dvi2pdf命令转换成pdf,则字体都能够嵌入了。
有的论文中贴的不是eps图片而是emf图片,这个格式可能不涉及字体的问题,emf文件不是ascii文件而是二进制文件,估计字体都融合到文件里边了,emf文件本身就比eps的要大很多。
// 昨天跟人讨论,有一个方法,也可以在dvi2pdf无法嵌入的时候用。就是生成pdf之后,再用adobe acrobat打开,然后重新打印成pdf,在这个时候选择一下要嵌入的字体。
再附:
先由dvi生成ps文件,然后在命令行下用gswin32c命令来生成pdf文件,效果更好:
gswin32c -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite
-dPDFSETTINGS=/printer -dCOMPatibilityLevel=1.4
-dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true
-sOutputFile=youfile.pdf yourfile.ps
该命令跟了一大堆参数,直接拷贝到命令行窗口即可。这种做法的好处是什么字体都嵌入了,包括Helvetica(URW捐给GS的Helvetica)、Times-Roman等等。【水木社区tex版的snoopyzhao提供】
另外,http://www.grassbook.org/neteler/highres_pdf.html 也提供了解决该问题的做法,可做参考【水木社区tex版hashhsah提供】,或者在matlab中用octave画图,该命令调用gnuplot【水木社区tex版的realwhz提供】
https://www.zhihu.com/question/28898001/answer/42514933
作者:匿名用户
链接:https://www.zhihu.com/question/28898001/answer/42529143
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/28898001/answer/42529143
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
这个属于MATLAB自身的问题,就是它在生成EPS、PDF等矢量图时没有嵌入所需的字体,因此包括CJK文字在内的许多符号都成了乱码,仅靠MATLAB自身是无法解决的,必须借助第三方工具:
- Foxit Reader:装Foxit Reader,免费版即可,在MATLAB figure窗口中选择打印,然后用Foxit Reader打印到文件,即可得到完整字体嵌入的PDF文件,美中不足是生成的PDF文件尺寸无法自适应figure的尺寸,结果往往是一整张PDF只有中间一小块是图像,四周一大片空白
- matlab2tikz:nschloe/matlab2tikz · GitHub,将MATLAB figure转为TikZ (Pgfplots)指令文件,转换后之后在LaTeX里边直接input就行
- export_fig:altmany/export_fig · GitHub,第三方做的图像导出工具,可以导出EPS、PDF并嵌入字体
- overpic或tikz:在MATLAB figure中不要添加任何非ASCII字符(可以用空格做占位符留出足够空白),将图片保存为EPS,然后在LaTeX中导入图片,用overpic或tikz宏包往上加汉字
以上是关于matlab eps 字体用AI打开乱码的解决的主要内容,如果未能解决你的问题,请参考以下文章