2014-11-21 2 views
1

У меня есть файл, который пытается найти, какой шрифт доступен для повторного кодирования по какой-либо внутренней причине (я понятия не имею, почему еще нет, это просто еще один рулон PS).Ghostscript - определить окончательный заменяемый шрифт во время выполнения

Он делает это с какой-то логики, как:

/Arial 
dup /Font resourcestatus{ pop pop }{ pop /ArialMT }ifelse 
dup /Font resourcestatus{ pop pop }{ pop /Helvetica }ifelse 

Цель состоит в том, что лучший доступный ключ шрифт в стеке в конце.

В Ghostscript в Windows это похоже/Arial (поскольку resourcestatus возвращает 2). Однако попытки найти результаты шрифта в общих предупреждений:

Can't find (or can't open) font file %rom%Resource/Font/ArialMT. 
Can't find (or can't open) font file ArialMT. 
Can't find (or can't open) font file %rom%Resource/Font/ArialMT. 
Can't find (or can't open) font file ArialMT. 
Querying operating system for font files... 
Didn't find this font on the system! 
Substituting font Helvetica for ArialMT. 

Можно ли определить конечный/ключ шрифта Helvetica в этой ситуации, прежде чем мы попытаемся использовать его?

Важно, так как процесс замещения вызывает некоторые ошибки, когда отсутствуют другие встроенные шрифты. Там, конечно, есть ошибка, которая вызывает это, но я все еще расследую и все равно любопытствую.

ответ

4

Ответ «не очень». Механизм замещения шрифтов в Ghostscript довольно сложный и включает некоторые эвристики, основанные на характеристиках шрифта. Это также зависит от того, как вы настроили Ghostscript и установленные шрифты.

В вашем конкретном случае вы, вероятно, обнаружите, что существует определение в fontmap.GS для Arial. Фактически шрифт fontmap.GS по умолчанию включает в себя следующее:

/Arial/ArialMT;

Однако, если вы не установили систему Windows (и не использовали установщик GS для установки FontPath), он фактически не установил ссылку для ArialMT. Итак, поскольку ArialMT не определен, он возвращается к шрифту «if else else», который является Helvetica. Довольно многое, что вы видите на заднем канале выше.

Лучше избежать проблем замены шрифта тщательно настроить fontmap.GS, версия поставляется с источниками Ghostscript является примера, его не предполагается использовать «как есть» на каждой системе.

+0

Спасибо, что расчистили его. В этом случае я просто использую настройки по умолчанию, скомпилированные в версию Windows. Я только исследую, как файл ведет себя, когда шрифт заменяется, поскольку он, кажется, блокирует определение будущих шрифтов или что-то в этом роде. –

+0

Код замены шрифта не блокирует определение (или переопределение) шрифтов, но, конечно, если программа PostScript проверяет наличие именованного шрифта перед ее определением, тогда это может иметь такой эффект. Но тем не менее, код замены шрифтов не будет блокировать что-либо. – KenS

+0

Если вы действительно хотите пройти эвристику замены аркановых шрифтов, вы можете посмотреть gs_fonts.ps, gs_fapi.ps, gs_fntmem.ps. Для CIDFonts вам нужно будет посмотреть gs_cidcm.ps, gs_ciddc.ps, gs_cidfn.ps и gs_cmap.ps. gs_ttf.ps и gs_cidtt.ps используются для прямой загрузки шрифтов TrueType, но не подстановки. Обратите внимание: вам понадобятся отличные рабочие знания PostScript, чтобы продвинуться с этими программами. – KenS