如何让 Times 在 linux 下打印?我安装了 debian wheezy linux、ghostscript、cups、mscorefonts。但是当我打印时,我得到的时间太宽了,与 Windows 1 相比——字母间距太宽了。
有什么办法可以解决这个问题?
从同一个 Java 小程序以及 Win 和 Lin 上完成打印。Lin 变体的 Postscript 使用 Times 字体,Win 变体的 Postscript 使用 TimesNewRomanPSMT 字体。只是替换字体名称会更改它,但不会更改输出中的任何内容。
==================
Debian Wheezy、Debian Squeeze、Ubuntu Natty 检查为 linux。大多数检查都在 Debian Wheezy 中。
ghostscript:已安装: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;"
打印结果对比:http: //piccy.info/code2/1652248/4b2c3b10f5316f9836496af5501892d1/
我在 linux 系统上有 Times New Roman 字体!Windows 的 PDF 是在 linux 上使用 linux ghostscript 从 windows 机器上生成的 postscript 源生成的。
例如,看一下右上角,0401060 写在哪里。Windows后记代码:
%%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?
linux后记代码:
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
如您所见,它选择大小为 10.0 的字体 #29。字体 #29 是 /Times-Bold ISOF
而且,最糟糕的是,它已经写了两行——所以问题出在 java<=>cups 连接器的某个地方。
================== “Same Java Applet”是网上银行应用程序iBank2。
"Times" 被 Ghostscript 替换为 Nimbus,而不是 TimesNewRoman:
./Init/Fontmap.GS:/Times-Roman /NimbusRomNo9L-Regu ;
./Init/Fontmap.GS:/Times-Italic /NimbusRomNo9L-ReguItal ;
./Init/Fontmap.GS:/Times-Bold /NimbusRomNo9L-Medi ;
./Init/Fontmap.GS:/Times-BoldItalic /NimbusRomNo9L-MediItal ;
./Init/Fontmap.GS:/TimesNewRoman /TimesNewRomanPSMT ;
./Init/Fontmap.GS:/TimesNewRoman,Bold /TimesNewRomanPS-BoldMT ;
./Init/Fontmap.GS:/TimesNewRoman,Italic /TimesNewRomanPS-ItalicMT ;
./Init/Fontmap.GS:/TimesNewRoman,BoldItalic /TimesNewRomanPS-BoldItalicMT ;
(顺便说一句,您是在 Windows 上使用 Ghostscript,还是通过本机打印机驱动程序进行打印?)在 Windows 上,我将 PostScript 本机驱动程序打印到 .ps 文件。
所以它本身不是一个 Ghostscript 问题......但它可能源于您的 Win/Lin 系统上的不同 Java 版本 + 配置。它看起来像 java 中的打印问题,但这并不取决于 java 版本——两者都安装了最新的 java6。
该 PostScript 很可能是由您的 Java 小程序生成的,而 Ghostscript 只是它在打印过程中的使用者。通常,我只想确保它使用 TimesNewRoman 字体作为 Times one,而不是 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:http ://datacompboy.ru/u/smpl.tar.bz2
如果是这样,则将 Windows 字体文件复制到 Linux。
它已经是windows文件的副本。msttcorefonts 与一个相同,随windows 一起分发。
由于在生成的 postscript 文件中已经将 0401060 拆分为两行,这意味着该 java 小程序在打印时发现字体太宽,并在生成时拆分...所以问题是 - 如何在系统中替换 Times 字体所以,那个 java打印会找到 TimesNewRoman 而不是 Nimbus,并生成正确的输出?