我生成了一个带有一行字符 M 的 PDF。每个 M 具有一致的宽度,但每个 M 之间的距离在变化:第一对是 2px,第五个有 3px,然后接下来的四个有 2px,第十个是 3px,等等。
由于我的代码中的任何 M 或中间的任何空格绝对没有区别,唯一的结论是某些宽度值无法在坐标系中正确缩放,每隔一段时间就会产生一个额外的像素。
这是 PDF 在绘制字形时计算水平移动量的方式:
在计算标准 96DPI 显示器时,每个像素以 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 页)