我使用convert和pango从字符串创建一个png文件,其中字符串是C语言代码。
我的转换在许多文件上都失败了,但并非全部。很难找到失败的确切原因,但似乎字符串包含由pango解释的字符。
有没有办法逃脱所有可能导致Pango错误的令牌?
我通过Python子进程调用这样的转换:
cmd = """convert pango:'<span foreground="black" background="white">"%s"</span>' outfile.png""" % C_string
TIA!
答案 0 :(得分:1)
将subprocess.PIPE
与subprocess.Popen.communicate
一起使用,而不是浪费时间尝试混合python,shell和pango转义序列。 Pango应该通过glib或cgi来逃避。
import glib
from subprocess import Popen, PIPE
cmd = 'convert pango:- outfile.png'
pid = Popen(cmd,
stdin=PIPE,
stdout=PIPE,
stderr=PIPE,
shell=True)
text_node = glib.markup_escape_text(C_string) # or cgi.escape(C_string)
pango = '<span foreground="black" background="white">{0}</span>'.format(text_node)
stdout, stderr = pid.communicate(pango)