2012-01-04 2 views
0

에서 TFF 파일을 열 수 있습니다 :이 코드는 항상 작동되지그러나 나는 코드가 아래와 같습니다 창

Font getFont(String fontPath) throws IOException, FontFormatException { 
     fis = new FileInputStream(fontPath); 
     bis = new java.io.BufferedInputStream(fis); 
     Font tmp = null; 
     try { 
      tmp = Font.createFont(Font.TRUETYPE_FONT, bis); 
     } catch (FontFormatException e) { 
      e.printStackTrace(); 
      bis.close(); 
      fis = new FileInputStream(fontPath); 
      bis = new java.io.BufferedInputStream(fis); 
      tmp = Font.createFont(Font.TYPE1_FONT, bis); 
     } 

     return tmp.deriveFont(96.0f); 
    } 

!. java.awt.FontFormatException을 :

이 처음 던질 이유가 몇 가지 글꼴 파일을 java.awt.FontFormatException가 발생합니다
그러나, 해당 글꼴 파일을 ... 창에서 제대로 열 수있는 폰트 이름을 찾을 수 없습니다

다음 던져

: java.awt.FontFormatException : 나쁜 PFA 글꼴

+0

정확하게 똑같은 문제가 있습니다. 나는 TTF 파일이 임시 파일에 기록된다는 것을 알았습니다. 그런 다음이 파일이 처리되고이 속성이 TrueTypeFont 인스턴스에 설정되어 있지 않기 때문에 FontFormatException (글꼴 이름을 찾을 수 없음) 예외가 발생합니다. tmp 글꼴 파일의 메타 데이터를 확인했기 때문에 이상하게 들릴 수 있습니다.이 파일에는 필요한 메타 데이터가 들어 있습니다. – davidcyp

+1

.. 그리고 웹에서 TTF 파일을 다운로드하여 문제를 해결했습니다. 나는 foo.TTF for OSX가 foo.TTF for Windows와 같지 않다고 생각한다. 그러나 내 모든 포함 된 글꼴을 다운로드 한 글꼴로 바꾸면 마침내 문제가 해결되었습니다. – davidcyp

답변

0

컴퓨터에서이 작업을 실행 해보십시오. rootPath을 글꼴의 경로로 바꿉니다.

public class FontLoader { 
    public static void main(String[] args) { 
     String rootPath = "/Library/Fonts"; 

     File root = new File(rootPath); 
     if (root.canRead()) { 
      String[] fontFiles = root.list(); 

      Font font = null; 
      for (String fontFile : fontFiles) { 
       try { 
        System.out.println(fontFile); 
        font = Font.createFont(Font.TRUETYPE_FONT, new File(root 
          + "/" + fontFile)); 
        System.out.println(font); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
} 

그럼 당신이 약간 코드를 재구성 할 수 있습니다 경우는 반드시 시간의 무기한를 실행할 수 및합니다 - 귀하의 의견에 열기/닫기의 스택 스트림은 다소 의심스러운. 나는 당신이 그 인스턴스 변수를 선언하고있는 곳을 보지 않고 다른 코드가 그것들을 조작하고있는 것을 보지 않고 이것을 말하고있다.

관련 문제