2011-01-04 2 views
1

특정 글꼴 (Font.canDisplay() 포함)에 글리프 (glyph) 표현이없는 문자를 XML 파일에서 검사하는 Java 프로그램에서 작업 중입니다.Java : OTF 글꼴 사용, 특정 글꼴 존재 여부 확인

XML 파일은 기본적으로 UTF-8로 인코딩되어야합니다. XML 코드의 엔티티는 canDisplay에 의해 검사되기 전에 char/int 값으로 파싱되고 변환됩니다. canDisplay

    • XML 파일의 파일 이름
    • 글꼴 이름

    특정 글꼴이 있는지 확인하고 싶습니다. 그렇지 않으면 canDisplay 사용에 많은 의미가 없기 때문에 시스템에 존재합니다.

    필자가 이해하는 한, Java 6은 OTF 글꼴을 지원합니다. 그러나 java.awt. *에서 getAvailableFontFamilyNames()를 사용하면 TTF 글꼴 만 나열됩니다.

    OTF 글꼴 (이름으로 제공)이 있는지 여부를 확인하는 방법이 있는지 알고 싶습니다. 그리고 일반적으로 Windows 용 Java에서 OTF 글꼴을 사용하는 것이 실용적입니다.

    이 목적은 xsl-fo를 PDF로 변환하기 위해 renderX의 XEP를 사용합니다. xsl-fo 파일에 특정 글꼴로 표시 할 수없는 문자가 포함되어 있는지 여부를 감지 할 수 있기를 원합니다. XEP는 경고를 표시하지 않고 글리프 대신 공백 만 인쇄합니다. 더 나쁜 것은 정당화 된 텍스트의 간격 계산을 혼동하는 것으로 보이므로 빈 공간이있는 줄은 현재 양쪽 정렬 된 블록 크기보다 길거나 짧습니다.

    특정주의 사항이 있음을 알고 있습니다. 문자가 일반, 이탤릭 또는 굵게 표시되는지 확인한 다음 특정 글꼴로 글리프를 확인해야합니다. 그러나 현재 문자에 ​​대한 글리프 (glyph)가 일반 글꼴면에 존재 하는지를 확인하는 좀 더 일반적인 방법이 충분할 것입니다.

  • 답변

    0

    .OTF 글꼴도 있습니다.

    GraphicsEnvironment genv = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
        for (String ffname : genv.getAvailableFontFamilyNames()) { 
         System.out.println(ffname); 
        } 
    

    그래서 어느 특정 글꼴 파일에 문제가있는 글꼴 이름은 파일 이름과 다른, 또는 한 getLocalGraphicsEnvironment에 로케일 매개 변수를 추가 할 수 있습니다.

    발음 구별 부호가있는 라틴 문자의 경우 기본 문자 코드 + 발음 구별 코드 조합을 검색하는 유니 코드 정규화 (Java 텍스트)가 도움이 될 수 있습니다. 다음과 같음 :

    java.text.Normalizer.normalize(letter, java.text.Normalizer.Form.NFKD).replaceAll("\\p{M}", "");