所以我再次问这个问题,但这次有更多信息......
我对两种字体使用相同的 *.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 行宽,有时则相反。
我知道宽度 [] 不是问题,我尝试计算它应该是什么,它是什么并且结果匹配。
那么,还有什么能让字体彼此如此不同呢?
如果有一个我可以更改的属性,那么如果您向我展示在 swing 或 iText 上更改它的代码,或者两者兼而有之,如果这是它的本质(就像字距调整一样,因为我必须在两种字体上都关闭它)。
我相信 Lowagie 先生最清楚它可能是什么。