来自codeblocks的Postscript打印 - 非常奇怪的输出

时间:2013-09-07 17:08:45

标签: ubuntu colors codeblocks postscript

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

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

谢谢

1 个答案:

答案 0 :(得分:0)

哇。该文件中有一个很多的废话。一遍又一遍地重新编码相同的字体。 0 0 translate1.00000000 1.00000000 scale。我不确定是否要责怪wxWindows PostScript渲染器或code :: blocks,但这是一些错误的 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