Ubuntu 从代码块打印Postscript-非常奇怪的输出

Ubuntu 从代码块打印Postscript-非常奇怪的输出,ubuntu,colors,codeblocks,postscript,Ubuntu,Colors,Codeblocks,Postscript,我想在Ubuntu13.04机器上打印代码::blocks 12.11中的一些代码。所有其他的打印看起来都很好,但是输出到打印机和文件(postscipt)的颜色有奇怪的错位。文本似乎都在那里,但不同颜色的文本被移动/缩放/覆盖,使其无法使用(遗憾的是,我没有声誉包括一个图像),所以我上传了一个在 任何想法-我不知道这是CB,ubuntu还是 谢谢你哇。那档案里有很多废话。一遍又一遍地重新编码相同的字体0 0翻译1.00000000 1.00000000刻度。我不确定是责怪wxWindows P

我想在Ubuntu13.04机器上打印代码::blocks 12.11中的一些代码。所有其他的打印看起来都很好,但是输出到打印机和文件(postscipt)的颜色有奇怪的错位。文本似乎都在那里,但不同颜色的文本被移动/缩放/覆盖,使其无法使用(遗憾的是,我没有声誉包括一个图像),所以我上传了一个在

任何想法-我不知道这是CB,ubuntu还是

谢谢你

哇。那档案里有很多废话。一遍又一遍地重新编码相同的字体<代码>0 0翻译<代码>1.00000000 1.00000000刻度。我不确定是责怪wxWindows PostScript渲染器还是责怪代码::块,但这是一些不好的PostScript代码

我做了一个变通,但这不是真正的解决办法。如果任何责任方都在阅读,不要这样做,并认为它是固定的。它坏了

这就是说,在
%%BeginProlog
之后插入此代码似乎可以获得更好的结果。似乎文本的位置使用了错误的空格字符大小,所以稍微缩小所有字体使其看起来不错

/shrinkfont {
    dup dup findfont dup length dict begin {
        1 index /FID ne {
            1 index /FontMatrix ne {
                def
            }{
                .0008 exch .0008 exch
                dup length array copy
                scale def
            } ifelse
        } { pop pop } ifelse
    } forall
    currentdict end definefont pop pop
} def 
/Courier shrinkfont
/Courier-Bold shrinkfont
/Courier-Oblique shrinkfont
打包为AWK脚本:

#shrinkfont.awk
!/%%BeginProlog/{print}
/%%BeginProlog/{
print "%%BeginProlog"
print "    % modification by shrinkfont.awk"
print "    /shrinkfont {"
print "        dup dup findfont dup length dict begin"
print "        {"
print "            1 index /FID ne {"
print "                1 index /FontMatrix ne {"
print "                    def"
print "                }{"
print "                    .0008 exch .0008 exch"
print "                    dup length array copy"
print "                    scale def"
print "                } ifelse"
print "            } { pop pop } ifelse"
print "        } forall"
print "        currentdict end definefont pop pop"
print "    } def"
print "    /Courier shrinkfont"
print "    /Courier-Bold shrinkfont"
print "    /Courier-Oblique shrinkfont"
print "    % end modification"
}
调用:

awk -f shrinkfonts.awk postscripttest.txt > postscripttest.ps

你能把postscript代码的样本上传到某个地方吗,比如pastebin?我已经更新了我的问题,添加了一个图片链接。有图片总比没有图片好。但是,我们只能猜测,而不能看到postscript文件本身。postscript文件是一个文本文件。你应该能够直接将文本粘贴到问题中。即使有将近13000行?给你-谢谢luser droogI,我对你能做到这一切印象深刻,更令人印象深刻的是你能做些什么。您说这可能是wxWindows或Code::blocks。尽管我有时想要一份硬拷贝可能已经过时了,但如果这是普遍的(似乎没有),我会期待c::b社区的强烈抗议。这对我来说意味着我的设置有问题-我会检查我的安装-谢谢你缩小范围。我很快就回来汇报。我有点喜欢附言。:)第488行是它开始打印第5行的位置,第一个问题发生在第5行。第636行是开始打印该行文本的位置。您可以看到,它对文本中每个不同颜色的部分都进行了显式移动。因此,这些动作的计算是错误的。这可能与缺少字体或缺少字体度量有关。在我看来,用这些明确的动作来编写它是愚蠢的,因为正常使用
show
会自动将currentpoint保留在适当的位置。但既然他们在那里。。。。。。渲染模块必须能够访问正确的字体度量,以便能够准确计算字符串宽度。