我正在尝试使用Inkscape命令行将SVG图像转换为EPS文件。这是我运行(从Python脚本)执行的命令以进行转换:
bashCommand = "inkscape " + file + " -D --without-gui --export-eps=exports/" + type + ".eps"
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
已生成文件,并且在打开大多数文件时,文件似乎与预期的一样。问题在于某些文本不会显示(请参见下面的屏幕截图)。而是有奇怪的矩形符号。大多数缺少的文本没有特殊字符。我真的不知道什么会导致这个问题。
这是我在打印错误变量时看到的错误:
(process:1855): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
Fontconfig warning: ignoring UTF-8: not a valid region tag
在/etc/default/locale
中,我尝试添加以下内容(我在寻找解决方案时遇到了这个可能的解决方法):
LANG="en_US.UTF-8"
LANGUAGE="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
然后我使用sudo dpkg-reconfigure locales
这是使用locale
命令时得到的输出:
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
我使用Open Sans作为字体,并且也在服务器上安装了该字体。将字体添加到/usr/local/share/fonts
之后,我用fc-cache -f -v
命令重建了字体缓存。
使用以下代码将SVG转换为PDF时,一切都会按预期进行。所有文本都是可见的,并且使用Open Sans字体。
bashCommand = "inkscape " + file + " -D -d 300 --without-gui --export-pdf=exports/" + type + ".pdf"
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
这是PDF的样子:
我已经在互联网上搜索了一段时间,以找到一种解决方案,但是到目前为止我还找不到。
我正在使用Ubuntu 16.04服务器。我安装了Inkscape 0.91。
有人知道如何正确输入文字吗?为什么将文本转换为这些符号(第一个屏幕截图)?希望有人能帮忙!
答案 0 :(得分:1)
我只能告诉您部分情况。 “奇怪的矩形字符”是TrueType .notdef字形。使用字体时,它不会包含人类已知的每种书面语言中的所有可能字形。另外,在PostScript中,常规字体(与CIDFonts相对)一次只能访问255个不同的字形。
因此,要解决您尝试使用字体没有副本的字形的情况,字体应该包含.notdef字形,而thsat就是您每次尝试使用该字形时所使用的字形,不见了。通常,PostScript字体定义不带标记的.notdef,TrueType字体定义带空心矩形的字体。还有其他可能性,但这是最常见的。
那么,为什么要获取.notdef?嗯,这似乎也可能是(从某种意义上)由gtk发出的关于不支持语言环境的错误消息,并且忽略了UTF-8。
gtk需要将文本的字符代码重新映射为可以与嵌入字体一起使用的“东西”,而且似乎不知道如何处理UTF-8编码的文本,因此它会假装我认为它的“ C”基本上是美国ASCII。
不幸的是,我无法告诉您如何解决此问题,我对前端了解不多,但这在我看来并不像它的实际“ EPS”问题,问题出在生成EPS的应用程序,尤其是gtk。