1

我正在将文本添加到我的可见签名中。我的文字是:

BT
1 0 0 1 0 1 Tm
 /F1 5
Tf
(Hello World)Tj
ET

5是字体大小。但这是如何计算的?

我刚刚检查了文本的宽度,但它不一样:

AffineTransform affinetransform = new AffineTransform();
FontRenderContext frc = new FontRenderContext(affinetransform,true,true);     
Font font = new Font("myFont", Font.PLAIN, 5);
int textwidth = (int)(font.getStringBounds(text, frc).getWidth());

在我的 PDrectangle 中,尺寸 5 太大了。有任何想法吗?5是怎么计算的?

4

2 回答 2

1

@stanlyF 已经引用了如何解释字体大小。特别注意它大约是线条的标称高度

您似乎误以为它是宽度。正如我对您之前的问题的回答中已经提到的,字符串的宽度取决于

  • 字体度量,尤其是所涉及字符的字符宽度,
  • 字体大小,
  • 当前字符间距值,
  • 当前字间距值,
  • 水平缩放,
  • 当前文本矩阵,以及
  • 当前的变换矩阵。

有关详细信息,请阅读规范

于 2013-07-17T13:37:56.400 回答
0

您还应该为此值应用 Tm 文本矩阵转换。

“一种字体定义了一个标准大小的字形。这个标准的排列使得紧密间隔的文本行的标称高度为 1 个单位。在默认用户坐标系中,这意味着标准字形大小是用户空间中的 1 个单位,或 1 ⁄ 72 英寸。然后必须缩放标准大小的字体才能使用。缩放因子指定为 Tf 运算符的第二个操作数,从而在图形状态下设置文本字体大小参数。

于 2013-07-17T12:48:18.703 回答