2013-07-17 90 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