1

几天来我一直被这个问题困扰:我正在尝试使用画布对象的“postscript”选项从画布对象生成文本以获取.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"
4

1 回答 1

2

问题是生成的编码中许多 UNICODE 字符的处理不完整(一个错误!)。特别是,该字符\u9177未定义(mkpsenc.tcl在您的 Tk 安装的库目录中),并且输出文本的代码无论如何都无法正确处理这些事情。

此外,对此做一些事情是非常棘手的,因为在核心拉丁字母之外,有必要注意字形和字符之间的映射。我们欢迎提供代码来解决这个问题,但这很困难。(如果我们可以放弃所有复杂性并将 UTF-8 发送到打印机,那将是非常好的;从我们的角度来看,这将一次性解决问题。但我不知道这在一般情况下是否可行。 )

恐怕不是你想要的答案。

于 2010-10-03T06:07:14.990 回答