我是PDF的新手,我想操纵文件中字符之间的空格。 我已阅读PDFReference并了解其中的一些内容。 现在,我的问题是如何计算文本渲染的空间。
例如,我有
1 0 0 1 0 188.28799438 cm
BT
/F2 11.04 Tf
1 0 0 -1 0 9.38000011 Tm
(Some)Tj ( )Tj
21.24200058 0 Td
(text)Tj ( )Tj
我想变成这个:
1 0 0 1 0 188.28799438 cm
BT
/F2 11.04 Tf
1 0 0 -1 0 9.38000011 Tm
[(S)10(o)10(m)10(e)( )]TJ
21.24200058 0 Td
[(t)10(e)10(x)10(t)( )]TJ
添加空格,然后可以对其进行操作。但是我想知道如何使用这些附加值来计算ctm和行矩阵。
我知道我们将cm与上一个连接起来。
cm2 x cm1
未串联的Tms Tm2代替Tm1。
我被td运算符和我添加的新空格所困扰。有任何线索吗?
答案 0 :(得分:1)
如果您正在处理水平文本,并且只想使用TJ
运算符控制字形之间的间距,则不必担心将这些值添加到当前的转换矩阵或行矩阵中。 / p>
答案 1 :(得分:0)
正如评论中所阐明的那样,OP并未要求 TJ 数字对当前转换矩阵或文本行矩阵产生影响而不是文本矩阵 T m 。
在规范ISO 32000-1(等效于ISO 32000-2)的9.4.4节中对此进行了解释。文本空间详细信息:绘制字形后(可能在字母后跟数字) TJ 指令数组参数),文本矩阵应更新如下:
在水平模式下, t x 是位移,在垂直模式下, t y 为零> t x 为零, t y 为位移。适用值的计算方式为
即如果您在处理 TJ 指令时进行了此计算,并且当前绘制的字形的字符代码后面有一个数字,则该数字在此处被视为参数 T j 。
因此,如果您要确定仅由 TJ 数组参数的数字元素引起的位移,例如如果 TJ 数组参数中的 first 元素是一个数字,或者 TJ 数组参数中有多个连续的数字元素,并且您想知道每个人的效果-以上简化为
t x =(-T j / 1000)×T fs ×T h
t y =(-T j / 1000)×T fs