TJ和Td偏移量差异

时间:2018-09-06 11:27:35

标签: pdf

我有一些要编辑的文本(合理的文本,很烦人),所以我想知道是否:

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 :(得分:0)

假设我们在对your previous question的回答中确定水平文本,则水平位移 t x 对应于数字 T j < TJ 数组中的/ sub> 可以计算为

  

t x =(-T j / 1000)×T fs ×T h

其中 T fs 是当前字体大小, T h 是当前水平缩放比例。 / p>

因此,如果您有水平位移 t x 并想要计算相应的数字 T j 对于 TJ 数组,您只需将上面的方程式解析为:

  

T j = -1000×t x /(T fs ×T h

情况并非如此,因为 Td 不会 只是简单地移动文本矩阵按其参数,而是将其移动文本行矩阵并将文本矩阵设置为新的文本行矩阵值:

  

t x t y    Td   移至下一行的开头,与当前行的开头偏移( t x ,t y )。 t x t y 应该表示以无标度的文本空间单位表示的数字。更准确地说,该操作员应执行以下分配:

     

enter image description here

(ISO 32000-1,表108 –文本定位运算符)

因此, Td t x 参数不是 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

窗体,您可以像这样计算数值NUM1NUM2NUM3

  

NUM1 = -1000×(36.77199936-width(“ Some”))/(T fs ×T h

     

NUM2 = -1000×(38.4280014-width(“ text”))/(T fs ×T h

     

NUM3 = -1000×(33.42799759-width(“ stuff”))/(T fs ×T h

计算这些字符串的宽度时,请记住要考虑字体大小,字符间距和水平缩放!

即使那样,两种形式也不相同,因为末尾的文本行矩阵不同。