[Java] Swing에 우르두어 글꼴이있는 텍스트를 입력 할 때 영어 문자가 표시되지 않습니다.


Answers

Question

이것은 내 자신의 이전 질문 과 유사하지만, 그 해결책은 여기서 작동하지 않았다. 이전 질문에서 언급했듯이 필자는 영어를 여러 공식 인도 언어 중 하나로 번역해야하는 크로스 플랫폼 (Windows / Ubuntu) 응용 프로그램을 개발 중입니다. 응용 프로그램에는 사용자 정의 입력기가 있으며 영어와 입력 키를 입력하면 입력 한 텍스트가 특정 지역 언어로 번역됩니다. 우르두어는 다른 아랍어 / 히브리어처럼 왼쪽에서 오른쪽으로 다른 언어와 다릅니다. 나는 영어와 우르두어 문자가 모두 있는 오픈 라이선스 우르두어 글꼴 을 찾았지만, 영어로 문자를 입력하면 아무 것도 나타나지 않습니다.

글꼴 페인팅 문제인지 또는 입력 방법과 관련이 있는지 이해하지 못합니다. 지금까지이 언어에 대한 사용자 지정 입력기 ( InputMethod.dispatchEvent() )를 사용하지 않도록 설정하면 영어 텍스트를 볼 수 있습니다 (물론 음역은 발생하지 않습니다).

내 연구 결과 :

  • 글꼴을 Windows에서 만든 아랍어 글꼴 중 하나 (동일한 결과)로 변경하십시오.
  • ComponentOrientation 을 사용하여 텍스트 필드의 텍스트를 정렬하는 대신 Locale이 Urdu 일 때 setHorizontalAlignment 를 사용했습니다. 같은 결과.
  • Windows에서 JDK의 기본 입력기 공급자를 역 컴파일 ( sun.awt.windows.WInputMethod ) 여기서 dispatchEvent() 가 IME를 처리하기 위해 OS에 대한 기본 호출을 수행하는 것을 봅니다. 나는 여기서 그것을 할 수 없다.
  • 히브리어에 대한 사용자 정의 인스턴트 메신저를 발견 했습니다 - 내 버전의 dispatchEvent() 는 본질적으로 같습니다.
  • 이클립스에서 JTextField 용 코드를 JTextField - AbstractDocument 및 하위 클래스에서 아무 것도 찾을 수 없었습니다. AbstractDocument.insertUpdate() 메서드는 양방향 텍스트 입력을 확인하고 업데이트하지만 중요한 것은 없습니다.

dispatchEvent() 호출 후 무슨 일이 일어날 지 이해할 수 없습니다. 문자가 등록되고 있습니다. 즉, 음역 엔진은 입력 된 문자를 감지하여 처리 할 수 ​​있지만 화면에 나타나지 않습니다.

해결 방법

텍스트 필드의 방향을 보통의 왼쪽에서 오른쪽으로 쓰는 언어 그대로 그대로두면 영어 텍스트를 볼 수 있습니다. 그러나 우르두어를 사용하는 사용자에게는 이것이 허용되지 않습니다.

누군가 올바른 방향으로 나를 가리킬 수 있습니까?




Links