だから私はこの質問を幾分繰り返していますが、今回はもう少し情報があります...
両方のフォントに同じ *.tff ファイルを使用します。リクエストがあれば、どこかにアップロードし、ここからダウンロードできるようにします。
これは、Java Swing フォントの私のコードです。
static Font loadFont(String fontName, float size)
{
try
{
Font font = Font.createFont(Font.TRUETYPE_FONT, Utils.class.getResourceAsStream(fontName+".ttf"));
font = font.deriveFont(size);
GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(font);
return font;
}
catch (FontFormatException | IOException e)
{
//TODO error message
return null;
}
}
JTextAreaに設定しました。
これはiTextフォントの私のコードです:
public static BaseFont loadiTextFont(String fontName)
{
try
{
return BaseFont.createFont(Utils.class.getResource(fontName+".ttf").toString(), BaseFont.IDENTITY_H, false);
}
catch (DocumentException | IOException e)
{
//TODO error message
return null;
}
}
私はこの行でそれを使用します:PdfContentByte.setFontAndSize(font, size);
Swing と iText のフォント サイズを同じにする場合は、次の式を使用します。
iTextFontSize = 0.74 * swingFontSize
これは、少しのピクセル単位の dpi 計算の結果です。
これを行うと、フォントの高さが等しくなります。ただし、行の長さが異なり、一貫性がありません。Swing の行が iText の行よりも広い場合もあれば、その逆の場合もあります。
widths[] に問題がないことはわかっています。それがどうあるべきか、それが何であるかを計算してみましたが、結果は一致しました。
では、フォントを互いにこれほど異なるものにする可能性のあるものが他にあるでしょうか?
そして、私が変更できる属性がある場合は、swing または iText のいずれか、またはそれがその性質である場合はその両方でそれを変更するためのコードを見せていただければ幸いです (カーニングも同様です。両方のフォントでオフにします)。
ロワギー氏は、他に何が考えられるかを最もよく知っていると思います。