我正在为我的可见签名添加文字。我的文字是:
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?
答案 0 :(得分:1)
@stanlyF已经引用了字体大小的解释方式。特别注意它是线的标称高度
你似乎误以为它是宽度。正如my answer中former question已经提到的那样,字符串的宽度取决于
有关详细信息,请阅读specification。
答案 1 :(得分:0)
您还应该为此值应用Tm文本矩阵转换。
“字体定义一个标准尺寸的字形。此标准的排列使得紧密间隔的文本行的标称高度为1个单位。在默认用户坐标系中,这意味着标准字形大小为1个单位用户空间,或1/72英寸。然后必须缩放标准大小的字体以使用。比例因子被指定为Tf运算符的第二个操作数,从而在图形状态中设置文本字体大小参数。“ / p>