2012-10-17 16 views
1

我從fontpalace.com下載了Helvetica字體(僅搜索Helvetica),並使用Font.createFont()將其包含在Java應用程序中。但字體指標不適用於此,即標籤的計算最小尺寸是錯誤的。在Font.createFont中使用truetype字體文件時文本度量標準錯誤

一個簡單的示例應用程序,它顯示了這個問題:

package fontTest; 
import java.awt.Font; 
import java.io.InputStream; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class FontTest extends JFrame { 
    public FontTest() { 
     JLabel label = new JLabel("Test"); 
     try { 
      InputStream is = FontTest.class.getResourceAsStream("Helvetica.ttf"); 
      Font font = Font.createFont(Font.TRUETYPE_FONT, is); 
      label.setFont(font.deriveFont(12f)); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
     add(label); 
     pack(); 
    } 

    public static void main(String[] args) { 
     FontTest fontTest = new FontTest(); 
     fontTest.setVisible(true); 
    } 
} 

如果您刪除與label.setFont行(..),然後打包()命令的工作和窗口被調整大小,使得文本是可讀的。但是,由此,pack()不能正常工作,導致標籤以及窗口被調整爲非常小的尺寸,從而切斷了文本。我在Linux和Windows上遇到了這個問題。

我錯過了什麼嗎?它看起來像一些ttf字體文件的工作,而不是一些。但我無法找到正確工作的Helvetica(原始的Helvetica,而不是Neue Helvetica或其他)。

任何想法?

回答

1

font.deriveFont需要一個float而不是int。 Try label.setFont(font.deriveFont(12f));

+1

謝謝!這是一個令人尷尬的錯誤,在那裏放置一個int。使用「f」,結果稍微有所改進,但仍然是度量計算錯誤,因此窗口有點過小,並且會切斷部分文本。 – Masi

+0

我相應修正了上面的代碼。 – Masi

相關問題