我已经坚持这个问题好几天了: 我正在尝试使用其“postscript”选项从canvas对象生成文本以获取.ps文件。我发现如果我在画布上绘制线条,椭圆等,并且它们显示在.ps文件中,它工作正常,但是,我对文本对象没有好运 - 即使它们显示在画布上(显示在屏幕上) ),没有在输出.ps文件中捕获。
有人想过这个吗?您可以假设所有变量都是明确定义的。
wm geometry . +0+0
wm resizable . false false
set wtitle "Drawing Chinese Character"
frame .frm -width $pad_width -height $pad_height -relief raised -bd 2
canvas .p0 -width $pad_width -height $pad_height -relief raised -bd 0
.p0 create rectangle 0 0 $pad_width $pad_height -outline gray -fill white -width 0
.p0 create text $akx $aky -text "\u9177" -font -Adobe-Times-Bold-R-Normal-*-$fontsize-*
.p0 create line 0 0 $pad_width $pad_height -fill red -width 2 -arrow last
pack .p0 -in .frm -fill both
pack .frm -side bottom
update;
.p0 postscript -fontmap fontMap -file "char.ps"
答案 0 :(得分:2)
问题是生成的编码中的许多UNICODE字符的处理是不完整的(一个错误!)。特别是,未定义字符\u9177
(在您的Tk安装库目录的mkpsenc.tcl
中)和输出文本的代码无论如何都无法正确处理这些内容。
此外,对此做一些事情是非常棘手的,因为在核心拉丁字母表之外,有必要注意字形和字符之间的映射。我们欢迎代码的贡献来解决这个问题,但这很困难。 (如果我们可以放弃所有这些复杂性并且只是将UTF-8发送到打印机那将是非常好的;这将从我们的角度一次性解决问题。但我不知道这是否可能在一般情况下。 )
不是你想要的答案,我担心。