2013-07-17 47 views
1

我正在向可见签名添加文本。我的文字是:pdf/F字体大小不是实际大小?

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是如何计算的?

回答

1

@stanlyF已经引用了字体大小是如何解释的。尤其是观察它是线的标称高度

您似乎有一个误解,那就是宽度。正如my answer已经提及到您former question,字符串的宽度取决于

  • 字体规格,特别是涉及到的字符的字符宽度,
  • 字体大小,
  • 当前字符间距值,
  • 当前字间距值,
  • 水平缩放,
  • 当前文本矩阵,
  • 当前变换矩阵。

详情请参阅specification

0

你也应该对这个值应用Tm文本矩阵变换。

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

+0

你能举个例子吗? – grep