2014-09-04 3 views
4

내 스윙 응용 프로그램에 유니 코드 문자를 표시하는 데 문제가 있습니다.
문제는 중국어에 적절한 문자가 포함되지 않은 사용 된 글꼴이라고 생각하십시오. 내가 JAVA 내 프로그램을 시작할 때
:
리눅스 (쿠분투 14.04) :

유니 코드 char이 Swing에서 렌더링되지 않고 어떤 글꼴이 실제에서 사용됩니까?

가 여기 내 문제에 좀 더 많은 정보를 정기적으로 있습니다 (단지 빈 상자가 표시됩니다) (나는 몇 가지 조사를했다) 6, 중국어 문자는 이 표시되지 않습니다. (빈 상자 만).
(getFont()을 통해 라벨 글꼴을 묻는 것은 다음을 반환합니다 : DejaVu Sans)
JAVA 7로 프로그램을 시작할 때 중국어 문자가 올바르게 표시됩니다! 내가 JAVA (6) 내 프로그램을 시작
은, 중국어 문자가 올바르게 표시됩니다
가 :

윈도우 (8.1) (요청하는 레이블 (내의 getFont 통해 글꼴)를 반환 같은데요 산세)!
(getFont()을 통해 레이블 글꼴을 묻는 것은 SansSerif를 반환합니다.)
JAVA 7로 프로그램을 시작하면 중국어 문자가 올바르게 표시됩니다!
() 레이블 (내의 getFont을 통해 글꼴 요구 수익률 : 산세 리프) (대체 폰트로 사용되는 것)

$ JAVA_HOME/lib 디렉토리/글꼴, 자바 버전 모두 (+ 7 6) 같은 글꼴이 포함되어 . (두 시스템에서)
글꼴 파일의 크기 (Java6 + Java7)와 fontconfig.properties.src가 모두 동일합니다.

직접 Label에 (getFont()를 통해) 묻는 경우 Windows (8.1)에서는 "SansSerif"를, 쿠분투 (14.04)에서는 "DejaVu Sans"를 반환합니다. 문자를 올바르게 표시되어
enter image description here

"산세 리프"Windows에서 :
enter image description here

JAVA 7과 리눅스 시작일 :

는 JAVA 6 리눅스에서 시작 (스크린 샷 참조) , SansSerif-Font가 사용됩니까? MS SansSerif (이름이 SansSerif 인 유일한 글꼴)에는이 모든 중국어 문자가 없습니다.

편집 :
DejaVuSans와 동일합니다.
DejaVu Sans에는 중국어 문자가없는 것 같습니다. (그러나, 그들은 표시됩니다!)

편집 2 :) How to determine if 2 fonts have equivalent glyphs?을하지만, 중국어 예를 들어 텍스트
으로이 결과 :
내가 앤드류가 게시 된 코드를 시도합니다 (

JAVA 6 리눅스 시작일 :

enter image description here

,369 :

enter image description here는 JAVA 7과 리눅스에 시작

EDIT 3 :
reqested로, 여기에 문자열 내가 테스트 한 어떤 : 나는 할 수 있습니다 (시스템)
어떤 글꼴 정말 사용 방법 :

String s = "\u6253\u5370\u8FC7\u671F\u8BC1\u4E66\u8BB0\u5F55"; //means: 打印过期证书记录 
JOptionPane.showMessageDialog(null, s); 

질문입니다 찾아?
미리 감사드립니다.

+0

나는 확실하지 않다 당신의 질문에 대한 답. OTOH, *** 글꼴 *** 표시 할 수있는 글꼴을 찾으려면 ['Font.canDisplayUpTo (String)'] (http://docs.oracle.com/javase/8/docs/api/java/awt/Font.html#canDisplayUpTo-java.lang.String-) .. –

+0

제안 해 주셔서 감사합니다. 그러나'Font.canDisplay ... '로 ** 어느 ** 글꼴이 사용되는지 알 수 없습니다. – Ben

+0

사실,하지만 항상 ** 작동하는'Font'를 사용할 수 있습니다. *** BTW -'Serif' 글꼴의'GlyphVector'와 모든 글꼴의'GlyphVector'를 비교할 수 있어야한다고 생각했습니다. 동일한 글리프 벡터를 생성하는 사람들의 목록이 필요합니다.하지만 프로덕션 앱에 넣고 싶지는 않습니다. 잠재적으로 시간이 많이 걸리기 때문입니다. 필자는 특정 시스템의 논리 글꼴이 어느 글꼴에 매핑되는지를 결정할 시점을 실제로 볼 수 없습니다. 스크린 샷을 통해 알 수 있듯이 Java 버전간에 변경 될 수 있습니다. –

답변

관련 문제