linux下的Ghostscript:时间太宽
如何在linux下使打印时间工作? 我安装了debian wheezy linux、ghostscript、cups和mscorefonts。 但是当我打印时,我得到的时间太宽了,与windows 1相比——字母间距太宽了 有办法解决这个问题吗 从同一Java小程序在Win和Lin上进行打印。 Lin变体的Postscript使用Times字体,Win变体的Postscript使用TimesNewRomanPSMT字体。 只需替换字体名称即可更改它,但不会更改输出中的任何内容 ================= Debian喘息,Debian挤压,Ubuntu Natty作为linux检查。 大多数检查都是Debian气喘 鬼脚本: 已安装:9.02~dfsg-2 sun-java6-jre: 安装日期:6.26-1 cups pdf打印机 PPD为PDF格式。PPD:linux下的Ghostscript:时间太宽,linux,printing,ghostscript,cups,Linux,Printing,Ghostscript,Cups,如何在linux下使打印时间工作? 我安装了debian wheezy linux、ghostscript、cups和mscorefonts。 但是当我打印时,我得到的时间太宽了,与windows 1相比——字母间距太宽了 有办法解决这个问题吗 从同一Java小程序在Win和Lin上进行打印。 Lin变体的Postscript使用Times字体,Win变体的Postscript使用TimesNewRomanPSMT字体。 只需替换字体名称即可更改它,但不会更改输出中的任何内容 =========
*PCFileName: "CUPS-PDF.PPD"
*Manufacturer: "Generic"
*Product: "(CUPS v1.1)"
*ModelName: "Generic CUPS-PDF Printer"
*ShortNickName: "Generic CUPS-PDF Printer"
*NickName: "Generic CUPS-PDF Printer"
*1284DeviceID: "MFG:Generic;MDL:CUPS-PDF Printer;DES:Generic CUPS-PDF Printer;CLS:PRINTER;CMD:POSTSCRIPT;"
打印结果比较:
我在linux系统上有泰晤士报的新罗马字体!windows PDF是在linux上使用windows计算机上生成的postscript源中的linux ghostscript生成的
例如,查看右上角,其中写入了0401060。
Windows postscript代码:
%%IncludeResource: font TimesNewRomanPS-BoldMT
F /F1 0 /256 T /TimesNewRomanPS-BoldMT mF
/F1S53 F1 [83 0 0 -83 0 0 ] mFS
F1S53 Ji
4292 333 M (0401060)[42 42 42 42 42 42 0]xS
N 367 367 M 1192 367 I K
N 1667 367 M 2492 367 I K
51282 VM?
10.0 29 F
<303430313036> 37.44 526.0 52.0 S
10.0 29 F
<30> 6.24 541.0 62.0 S
N
linux postscript代码:
%%IncludeResource: font TimesNewRomanPS-BoldMT
F /F1 0 /256 T /TimesNewRomanPS-BoldMT mF
/F1S53 F1 [83 0 0 -83 0 0 ] mFS
F1S53 Ji
4292 333 M (0401060)[42 42 42 42 42 42 0]xS
N 367 367 M 1192 367 I K
N 1667 367 M 2492 367 I K
51282 VM?
10.0 29 F
<303430313036> 37.44 526.0 52.0 S
10.0 29 F
<30> 6.24 541.0 62.0 S
N
(顺便说一句,您是在Windows上使用Ghostscript,还是通过本机打印机驱动程序进行打印?)
在windows上,我正在将PostScript本机驱动程序打印到.ps文件
所以这本身不是一个鬼脚本问题。。。但它可能来自Win/Lin系统上的不同Java版本+配置。
这看起来像是java在打印上的问题,但这并不取决于java版本——两者都安装了最新的java6
PostScript很可能是由Java小程序生成的,而Ghostscript只是在打印过程中的使用者。
通常,我只想确保它在Times one中使用TimesNewRoman字体,而不是Nimbus。
我没能做到这一点
打印生成的ISOF宏为:
/ISOF {
dup findfont dup length 1 add dict begin {
1 index /FID eq {pop pop} {D} ifelse
} forall /Encoding ISOLatin1Encoding D
currentdict end definefont
} BD
以下是开始文件的剪切,以及生成的PDF:
如果是这样,则将Windows fontfile复制到Linux
它已经是windows文件的副本。msttcorefonts与windows中的一种相同
由于在生成的postscript文件中已经将0401060拆分为两行,这意味着,java小程序在打印时发现字体太宽,并在生成时拆分。。。所以问题是——如何在系统中替换Times字体,以便java printing找到TimesNewRoman而不是Nimbus,并生成正确的输出?从我在屏幕截图中看到的,您的Win-Lin打印差异
- …是否不源自时代新浪漫主义的差异
- …而是来自两个PostScript输出中的[有时][有时粗体]差异
/Times Bold(ISOF???)
字体,这一事实不属于Ghostscript的责任范围。PostScript很可能是由Java小程序生成的,而Ghostscript只是在打印过程中的使用者
在我看来,您提到的这个不祥的ISOF
不是fontname的一部分,而是一个PostScript过程,必须在PostScript文件的其他地方预定义,并应用于/Times Bold
字体。这可能是一个将原始字体重新编码为isolatin1编码的过程
您说您可以访问这两个字体文件(Windows上的TimesNewRomanPS-BoldMT和Linux上的Times-Bold)。如果是这样,则将Windows fontfile复制到Linux。然后,要验证两种字体之间的视觉差异,请在每个字体文件上运行以下两个命令:
fntsample \
-f /path/to/Times-fontfile.suffix \
-o Times-fontfile.suffix.pdf \
-l \
> Times-fontfile.suffix.txt
然后
pdfoutline \
Times-fontfile.suffix.pdf \
Times-fontfile.suffix.txt \
Times-fontfile-sample.pdf
生成的PDF Times-fontfile-sample.PDF将表示fontfile中包含的每个glyph的表格样本,这些样本将映射到相应的Unicode代码点部分
您可以使用这些PDF来显示两种字体之间的最小视觉差异(但我打赌您的差异将相当明显)
如果您没有在Debian中安装pdfoutline
和fntsample
,只需运行sudo-apt-get-install-fntsample
更新2(考虑更新的问题描述): datacompboy现在提供了一个包含以下4个文件的tarball:
-rw-r--r-- datacompboy/datacompboy 37722 2011-06-22 08:54 smpl/linout.ps
-rw-r--r-- datacompboy/datacompboy 15324 2011-06-22 08:54 smpl/linout.pdf
-rw-r--r-- datacompboy/datacompboy 54422 2011-06-22 08:57 smpl/winout.pdf
-rw-r--r-- datacompboy/datacompboy 99099 2011-06-22 08:56 smpl/winout.ps
有了这些文件,应该很容易找到问题的原因。如果datacompboy可以在Linux Ghostscript上运行Windows生成的PS文件,如下所示:
gs winout.ps
如果呈现OK(即:与winout.pdf相同),则GS字体映射没有问题,但winout/linout.ps中的实际文件差异有问题。从那里,继续分析应该很容易
不幸的是,现在我自己无法运行测试
更新3: datacompboy的PDF文件
linout.PDF
和winout.PDF
有一个巨大的区别:Linux版本没有嵌入字体,而Windows版本有。。。结果是,linout.pdf
的任何后期使用者在显示、打印、转换或处理该文件时,都会产生相当任意的结果
这是我能想到的另一个测试。它检查用于/Times Bold
(由Ghostscript替换为real/NimbusRomNo9L Medi
)和/timesnewromaps BoldMT`的Linux版本字体在字体度量方面的差异
使用这些工具创建三个不同的PDF
gs \
-o b.pdf \
-sDEVICE=pdfwrite \
-dPDFSETTINGS=/prepress \
-c "100 700 moveto \
/TimesNewRomanPS-BoldMT findfont \
12 scalefont \
setfont \
(0401060 0401060 0401060 0401060) show \
showpage"
gs \
-o c.pdf \
-sDEVICE=pdfwrite \
-dPDFSETTINGS=/prepress \
-c "100 700 moveto \
/Times-Bold findfont \
12 scalefont \
setfont \
(0401060 0401060 0401060 0401060) show \
showpage"