Я сгенерировал PDF-файл с рядом символов M. Каждая буква M имела одинаковую ширину, но расстояние между ними менялось: первая пара была 2 пикселя, пятая — 3 пикселя, затем следующие четыре — 2 пикселя, десятая — 3 пикселя и т. д.
Поскольку в моем коде нет абсолютно никакой разницы ни в каком из M или в каких-либо пробелах между ними, единственный вывод состоит в том, что некоторое значение ширины не может правильно масштабироваться в системе координат, время от времени генерируя дополнительный пиксель.
Вот как PDF вычисляет, насколько нужно сместиться по горизонтали при рисовании глифа:
При расчете для стандартного дисплея с разрешением 96 точек на дюйм каждый пиксель представлен 0,75 единицами (тщательно проверено и протестировано).
Имея это в виду, мне нужно убедиться, что значение Tx делится на 0,75.
Вот что я знаю:
- w0 — целое число из массива ширин (widths[])
- Tfs — это число, кратное 0,75 (установлено мной)
- Th равно 100 (по умолчанию)
- Tc и Tw равны 0 (по умолчанию)
Таким образом, Tj/1000 должно быть целым числом, то есть Tj должно делиться на 1000.
Один из способов — получить и отрегулировать значение Tj. Другой подход к этому состоит в том, чтобы получить доступ к значению Tx после его расчета и просто изменить его на ближайшее значение, кратное 0,75.
Как это сделать в iText?
Или все мое предположение неверно?
Источник: ссылка (стр. 252)