Прежде всего, имейте в виду, что не существует абсолютного предельного числа, разделяющего числа для пробелов между словами и пробелов для кернинга. Все, что вы можете сделать, это разработать эвристику, которая не работает для некоторых документов, обычно для очень жестко заданных.
Теперь вспомните, как эти числа применяются при расчете замены текста t x или t y от начала последнего символ перед числом до начала первого символа:
(ИСО 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 чисел в вашем тексте или чисел в окружающем тексте. Здесь я могу только догадываться, что может быть приемлемой эвристикой ...