我正在尝试将eps(使用Mathtype创建)转换为svg格式。 我对数学特征没有任何问题,但我无法获得任何特殊字符(又名àâ€......)
我试过unix和windows,但这些都没有。 使用的字体是Arial,并且安装正确(在Windows上默认,在unix中的fonts文件夹中手动添加)
我在Windows字体管理器中使用了Arial字体,并且非工作字符在。 他们只是没有被转换。
实际上,要转换我使用Inkscape(带ghostscript),如下所示: inkscape -z -f in.eps -l out.svg
提前致谢,
编辑:
Added in.eps file
https://pastebin.com/vBtUVy69
答案 0 :(得分:0)
您在Windows机器上安装Arial的事实与此问题没什么关系。
EPS文件是否包含嵌入的Arial字体?如果没有,那么你依赖于字体替换。您应该发布一个示例EPS文件,以便我们查看它。
我的猜测是Arial字体没有嵌入,因此Ghostscript取代了Helvetica,Helvetica字体没有这些字形,或者它们没有编码在EPS文件认为它们的字符代码中。 / p>
[编辑]
EPS评论说DocumentNeededFonts:Arial-BoldMT",所以EPS不包括字体,你得到字体替换。
我无法立即告诉你为什么SVG会说Arial。我可以猜到,但由于没有完整描述你如何制作SVG我无法(显然)确定。
现在... 如果转换路径使用Ghostscript的pdfwrite设备从EPS创建PDF文件,然后该PDF文件以某种方式转换为Inkscape的内部格式化(或直接使用Ghostscript之外的其他东西)然后发生的事情是Ghostscript用Helvetica代替缺失的Arial-BoldMT,当它生成PDF文件时它嵌入了Helvetica字体,但是调用它是Arial-BoldMT(或其他)。这是字体替换的结果,被替换的字体被重命名为预期的名称。
我认为您可以通过将-dEmbedAllFonts
设置为false来避免这种情况,但我还没有对其进行测试。即使你这样做,所有发生的事情都是PDF文件没有字体,就像EPS文件一样。因此SVG创建(可能)必须使用替代字体。你所做的只是将问题进一步推倒。
对此的正确答案是“始终嵌入字体”。
您还可以通过编辑ghostpdl / Resource / Init中的fontmap.GS文件,将Grialscript的Arial-BoldMT字体用于未将资源内置到ROM文件系统中的构建。对于使用ROM文件系统(例如Windows)的构建,您必须获取资源的副本(来自Ghostscript Git存储库),修改fontmap.GS文件,然后通过指向它来告诉Ghostscript使用修改后的资源-I
开关。
这仍然是一个黑客攻击,因为它的TrueType字体被用作PostScript字体的替代品,所以在Ghostscript中会有一定数量的猜测,但它通常效果很好,YMMV。