TJ и Td разница смещения - PullRequest
       1

TJ и Td разница смещения

0 голосов
/ 06 сентября 2018

У меня есть текст, который я хочу отредактировать (выровненный текст, действительно раздражающий), поэтому мне было интересно, если это:

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)-36.77199936*1000(text)-38.4280014*1000(stuff)-33.42799759*1000] TJ
...

1 Ответ

0 голосов
/ 07 сентября 2018

Исходя из горизонтального текста, мы определили в моем ответе на ваш предыдущий вопрос , что горизонтальное смещение 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

(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 )

При расчете ширины этих строк не забывайте учитывать размер шрифта, расстояние между символами и горизонтальное масштабирование!

И даже тогда эти две формы не идентичны, потому что матрица текстовой строки в конце отличается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...