Из того, что я вижу на скриншоте, ваши Win <-> Lin различия в печати ...
- ... do NOT происходят из Times <-> TimesNewRomanPSMT различия,
- ... а скорее из [SomeTimes] <-> [SomeTimesBold] различия в 2 выходных данных PostScript
, которые потребляются каждой очередью принтера (что в Linux весьма вероятно требует установки Ghostscript).(Кстати, вы вообще используете Ghostscript в Windows, или ваша печать там осуществляется через собственный драйвер принтера?)
Так что это НЕ проблема Ghostscript как таковая ... ноон может происходить из разных версий Java + конфигураций в ваших системах Win / Lin.
Тот факт, что ваш код Linux PostScript использует шрифт /Times-Bold (ISOF????)
, не входит в сферу ответственности Ghostscript.Этот PostScript, скорее всего, генерируется вашим Java-апплетом, а Ghostscript является его потребителем только при прохождении процесса печати.
Мне кажется, что этот зловещий ISOF
, который вы упомянули, не является частью имени шрифта, но процедура PostScript, которая должна быть предварительно определена в другом месте файла PostScript и применена к шрифту /Times-Bold
.Вероятно, это процедура, которая перекодирует исходный шрифт в ISOLatin1Encoding ...
Вы говорите, что у вас есть доступ к обоим файлам шрифтов ( TimesNewRomanPS-BoldMT в Windows и Times-Полужирный в Linux).Если это так, скопируйте файл шрифтов Windows в 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-файлы, время-fontfile-sample.pdf, будет представлять собой табличную выборку каждого глифа, содержащегося в файлах шрифтов, и они будут сопоставлены с соответствующими разделами кодовых точек Unicode.
Вы можете использовать эти PDF-файлы, чтобы выявить даже минимальные визуальные расхождения междудва шрифта (но я уверен, что ваши различия будут довольно явными).
Если вы не установили pdfoutline
и fntsample
в свой Debian, просто запустите sudo apt-get install fntsample
...
Обновление 2 (с учетом обновленного описания проблемы):
datacompboy предоставил архив, содержащий эти 4 файла:
-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 может запустить сгенерированный Windows файл PS на Linux Ghostscript, например:
gs winout.ps
, и если он отображает OK (то есть: так же, как winout.pdf), тогда нет проблем сОтображение шрифта GS, но проблема с фактическими различиями файлов в winout / linout.ps.Оттуда будет довольно легко продолжить анализ.
К сожалению, сейчас я не могу запустить тест самостоятельно.
Обновление 3:
PDF-файлы datacompboy linout.pdf
и winout.pdf
имеют одно огромное различие: в версии Linux нет встроенного шрифта, а в Windows - ... В результате любой последующий потребитель linout.pdf
будетвыдает довольно произвольные результаты при отображении, печати, конвертации или обработке этого файла в отношении шрифта.
Итак, вот еще один тест, о котором я могу подумать.Он проверяет, насколько версии Linux для шрифтов, используемых для /Times-Bold
(который заменяется Ghostscript на реальный /NimbusRomNo9L-Medi
) и / TimesNewRomanPS-BoldMT`, различаются по метрикам шрифтов.
Создайте три разныхPDF-файлы с этими командными строками Ghostscript:
a.pdf:
gs \
-o a.pdf \
-sDEVICE=pdfwrite \
-dPDFSETTINGS=/prepress \
-c "100 700 moveto \
/TimesNewRoman,Bold findfont \
12 scalefont \
setfont \
(0401060 0401060 0401060 0401060) show \
showpage"
b.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"
c.pdf:
gs \
-o c.pdf \
-sDEVICE=pdfwrite \
-dPDFSETTINGS=/prepress \
-c "100 700 moveto \
/Times-Bold findfont \
12 scalefont \
setfont \
(0401060 0401060 0401060 0401060) show \
showpage"
Параметр -dPDFSETTINGS=/prepress
должен обеспечивать внедрение шрифта в выходные PDF-файлы.(Это важно, иначе зритель мог бы использовать произвольный заменяющий шрифт для отображения PDF.)
За параметром -c
следует небольшой фрагмент PostScript, который предоставляет содержимое для страницы PDF.
Файлы 'a.pdf' и 'b.pdf' не должны отличаться.Они только проверяют, действительно ли псевдоним шрифта между /TimesNewRoman,Bold
и /TimesNewRomanPS-BoldMT
действительно работает, как ожидалось.
Файл 'c.pdf' может показать небольшие различия по сравнению с a.pdf и b.pdf в порядке нескольких пикселей здесь и там, но НЕ в отслеживании изпроверенная строка.
Если этот тест идет в соответствии с прогнозом, с различными шрифтовыми файлами, Fontmap.GS и самим Ghostscript все в порядке.Тогда проблема заключается только в способе вывода Java-апплета Linux (PS или PDF).