Исходя из горизонтального текста, мы определили в моем ответе на ваш предыдущий вопрос , что горизонтальное смещение t x соответствует числу T j в массиве TJ можно рассчитать как
t x = (-T j / 1000) × T fs × T h
где T fs - текущий размер шрифта и T h - текущий коэффициент горизонтального масштабирования.
Таким образом, если у вас горизонтальное смещение t x и вы хотите вычислить соответствующее число T j для TJ массив, вы просто разрешите уравнение выше:
T j = -1000 × t x / (T fs × T h )
НО это не совсем ситуация в вашем случае, потому что Td делает не просто сдвигает текстовую матрицу на ее параметры, но вместо этого сдвигает матрицу текстовой строки на них и устанавливает текстовую матрицу в новое значение матрицы текстовой строки:
т х т у
Td
Перейти к началу следующей строки со смещением от начала текущей строки на ( t x , t y ). t x и t y должны обозначать числа, выраженные в немасштабированных единицах текста. Точнее, этот оператор должен выполнить следующие назначения:
![enter image description here](https://i.stack.imgur.com/mFHgM.png)
(ISO 32000-1, Таблица 108 - Операторы позиционирования текста)
Таким образом, t x параметр Td не является t x для помещения в уравнение выше, но вместо этого вы должны вычесть ширину текста, нарисованного с момента последней настройки матрицы текстовой строки.
Итак, чтобы преобразовать ваш пример
BT /FAAABA 10 Tf
1 0 0 -1 0 9.38000011 Tm
(Some) Tj
36.77199936 0 Td
(text) Tj
38.4280014 0 Td
(stuff) Tj
33.42799759 0 Td
в
BT
/FAAABA 10 Tf
1 0 0 -1 0 9.38000011 Tm
[(Some) NUM1 (text) NUM2 (stuff) NUM3] TJ
форма, вы рассчитываете числовые значения NUM1
, NUM2
и NUM3
следующим образом:
NUM1 = -1000 × (36,77199936 - ширина («Некоторые»)) / (T fs × T h )
NUM2 = -1000 × (38,4280014 - ширина («текст»)) / (T fs × T h )
NUM3 = -1000 × (33,42799759 - ширина («материал»)) / (T fs × T h )
При расчете ширины этих строк не забывайте учитывать размер шрифта, расстояние между символами и горизонтальное масштабирование!
И даже тогда эти две формы не идентичны, потому что матрица текстовой строки в конце отличается.