文字 M の行を含む PDF を生成しました。すべての M の幅は一貫していましたが、それぞれの間の距離は変化していました。最初のカップルは 2 ピクセル、5 番目は 3 ピクセル、次の 4 つは 2 ピクセル、10 番目は 3 ピクセルなどでした。
私のコードでは、M やその間のスペースに絶対的な違いはないため、結論としては、一部の幅の値が座標系で適切にスケーリングできず、余分なピクセルが頻繁に生成されるということだけです。
これは、グリフが描画されたときに PDF が水平方向にどれだけ移動するかを計算する方法です。
標準の 96DPI ディスプレイの計算では、各ピクセルは 0.75 単位で表されます (徹底的にチェックおよびテストされています)。
それを念頭に置いて、Tx 値が 0.75 で割り切れることを確認する必要があります。
これは私が知っていることです:
- w0 は widths 配列 (widths[]) からの整数です。
- Tfsは0.75で割り切れる数です(私が設定しました)
- Th は 100 (デフォルト)
- Tc と Tw は両方とも 0 (デフォルト)
したがって、Tj/1000 は整数である必要があります。つまり、Tj は 1000 で割り切れる必要があります。
1 つの方法は、Tj 値を取得して調整することです。これに対する別のアプローチは、Tx 値が計算されたらアクセスし、0.75 で割り切れる最も近い値に変更することです。
iTextでこれを行うにはどうすればよいですか?
それとも私の仮定全体が間違っていますか?
出典:リンク(252ページ)