2012-10-17 5 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 (원래 Helveeta 나 다른 사람이 아닌)를 찾을 수 없었습니다.

아이디어가 있으십니까?

답변

1

font.deriveFont는 int가 아닌 float를 사용합니다. 시도하십시오 label.setFont (font.deriveFont (12f));

+1

감사합니다. 이것은 int를 넣는 난처한 실수였습니다. "f"를 사용하면 결과가 약간 향상되지만 메트릭 계산이 잘못되어 창 크기가 너무 작아서 텍스트의 일부가 잘릴 수 있습니다. – Masi

+0

이에 따라 위의 코드를 수정했습니다. – Masi

관련 문제