linux下的Ghostscript:时间太宽

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字体。 只需替换字体名称即可更改它,但不会更改输出中的任何内容 =========

如何在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:

*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输出中的[有时][有时粗体]差异
每个打印机队列(在Linux上很可能需要安装Ghostscript)都会使用它。(顺便说一句,您是在Windows上使用Ghostscript,还是通过本机打印机驱动程序进行打印?)

所以这本身不是一个鬼脚本问题。。。但它可能来自Win/Lin系统上的不同Java版本+配置

您的Linux 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"