Как сгенерировать тексты в файлы postscript из объекта Canvas библиотеки Tcl / Tk? - PullRequest
1 голос
/ 26 сентября 2010

Я застрял в этой проблеме несколько дней: я пытаюсь сгенерировать тексты из объекта canvas, используя его опцию "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"

1 Ответ

2 голосов
/ 03 октября 2010

Проблема в том, что обработка многих символов UNICODE в сгенерированной кодировке является неполной (ошибка!).В частности, символ \u9177 не определен (в mkpsenc.tcl в каталоге библиотеки вашей установки Tk) и код для вывода текста просто не обрабатывает эти вещи в любом случае правильно.Более того, делать что-то с этим очень сложно, потому что вне основного латинского алфавита становится необходимым позаботиться о сопоставлении между глифами и символами.Мы приветствуем вклады кода, чтобы исправить это, но это сложно.(Что было бы очень хорошо, если бы мы могли отбросить всю эту сложность и просто отправить UTF-8 на принтер; это решило бы проблемы с нашей точки зрения за один раз. Но я не знаю, возможно ли это в общем случае.)

Боюсь, не тот ответ, который вы хотели.

...