0

所以我再次问这个问题,但这次有更多信息......

我对两种字体使用相同的 *.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 先生最清楚它可能是什么。

4

0 回答 0