PDF TJ оператор - PullRequest
       2

PDF TJ оператор

0 голосов
/ 13 марта 2019

можно ли определить, представляет ли число в операторе TJ пробел между словами?

Пример: [(Sta) 28 (ry) -333 (Plzenec,)] TJ

Число 28 недостаточно для пробела, в противном случае 333 должно быть пробелом в соответствии с фактическим размером шрифта.Размер шрифта 9,96

1 Ответ

1 голос
/ 15 марта 2019

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

Теперь вспомните, как эти числа применяются при расчете замены текста t x или t y от начала последнего символ перед числом до начала первого символа:

screen shot from ISO 32000-1, 9.4.4 Text Space Details

(ИСО 32000-1, раздел 9.4.4. Детали текстового пространства, также обсуждается здесь )

Таким образом, во-первых, только такое число увеличивает разрыв до следующего символа, если оно отрицательно .

Кроме того, число применяется до , размер шрифта умножается; таким образом, не нужно учитывать размер шрифта, как я неправильно заявил в комментарии к вопросу.

Число (масштабируется 1 / 1000 ) напрямую вычитается из смещения глифов. Таким образом, можно сравнить его со смещением глифа рассматриваемого шрифта, чтобы получить представление о значении числа.

Смещения глифа по существу являются числами из соответствующего шрифта Widths или W (по умолчанию значение MissingWidth / DW ) масштабируется на 1 / 1000 . Поскольку числа TJ и widths масштабируются на 1 / 1000 , вы можете напрямую сравнивать их.

Таким образом, очевидным вариантом будет сравнение абсолютного значения отрицательных TJ чисел с шириной пробела глифа в рассматриваемом шрифте. Это отличается от шрифта к шрифту, например это 600 для курьера, 278 для Helvetica и 250 для Times-Roman.

Пробелы между словами, создаваемыми TJ числами, не обязательно должны быть такими же широкими, как полный глиф шрифта, а соответствующей его частью, например, половина его значения (YMMV), может использоваться как минимум для интерпретации числа TJ как пробела между словами .

К сожалению, однако, если генератор PDF создает все пробелы между словами по TJ числам, а не по глифам пробелов, и если шрифт внедряется только как подмножество, нет необходимости вставлять пробел глиф вообще. В этом случае вы можете использовать другие глифы для сравнения; часто длина заглавной буквы «М» используется в качестве меры ширины шрифта, вы можете использовать соответствующую ее часть, например, одна пятая (снова YMMV).


Вы можете улучшить свою эвристику

  • , также принимая во внимание значение интервала между символами T c : If T c / T fs отрицательно с соответствующим абсолютным значением, текст жестко задан. В этом случае вы можете уменьшить предельное число, указанное выше. Или
  • путем анализа всех TJ чисел в вашем тексте или чисел в окружающем тексте. Здесь я могу только догадываться, что может быть приемлемой эвристикой ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...