我想在 Ubuntu 13.04 机器上从 code::blocks 12.11 打印一些代码。所有其他打印似乎都很好,但输出到打印机和文件(postscipt)的颜色奇怪地错位了。文本似乎都在那里,但不同颜色的文本被移动/缩放/覆盖,使其无法使用(遗憾的是我没有包含图像的声誉)所以我在picpaste上传了一个。
任何想法 - 我不知道这是 CB、ubuntu 还是..?
谢谢
我想在 Ubuntu 13.04 机器上从 code::blocks 12.11 打印一些代码。所有其他打印似乎都很好,但输出到打印机和文件(postscipt)的颜色奇怪地错位了。文本似乎都在那里,但不同颜色的文本被移动/缩放/覆盖,使其无法使用(遗憾的是我没有包含图像的声誉)所以我在picpaste上传了一个。
任何想法 - 我不知道这是 CB、ubuntu 还是..?
谢谢
哇。那个文件里有很多废话。一遍又一遍地重新编码相同的字体。0 0 translate
. 1.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