문제

을 Devanagari 합자(유니코드 문자열)을 렌더링에 제대로 Mac OS X10.6.

문자열에 그려진 JComponentRenderingHints 한 능력을 발휘합니다.합자가에서 제대로 표시되는 윈도우 XP SP2 7,우분투하지만,Mac OS X,합자가 분해(또는 오히려,하지 합병을 올바르게),톱는 멀리에서 자신의 위치,등등.(cf.아래 스크린샷,정확한 렌더링에서 예를 들 Win XP SP2 에서 왼쪽(과 RenderingHints 키싱 ON),잘못된 렌더링에서 예를 들 Mac OS X10.6.7 오른쪽에(Antialising DEFAULT = OFF).

내가 설정한 글꼴은 다음과 같다,그래서 그 사용은 기본 글꼴에서 어떤 시스템:

new Font(null,Font.PLAIN,20);

저는 이 모든 것을 믿을 할 수 있는 뭔가 있을 수 있다는 사실을 기본 문자 인코딩에 맥 MacRoman(지 UTF-8 일부),그리고 기타 시스템(Windows)사용 UTF-8 일부(과 같은 WinLatin-1)또는 cp1252 또는니다.

심지어는 이 정보를 손에,나는 어둠을 처리하는 방법에 대해 이 문제를 해결합니다.따라서 나는 매우 감사하게 될 것입할 수 있었습니다 누군가가 나에서 오른쪽 방향입니다.

correct and incorrect rendering of the same string

나라:

  • 글꼴을 설정하 Devanagari MT 지 않았다 문제를 해결할
  • TextAttribute LIGATURES_ON 문제가 해결되지 않았

나는 것에 매우 감사한 힌트를,또는 코드는 다른 개발자들(가급적이면을 가진 힌두경을 개발하는 Mac).

도움이 되었습니까?

해결책

를 사용하여 석영 렌더러 대신 Java2D renderer.

이들에게 상당한 차이의 품질에서 문자 모양을 렌더링을 수행합니다.그것이 수행 될 필요가 처음으로 제안 .

if (System.getProperty("os.name").startsWith("Mac OS X")) {
    System.setProperty("apple.awt.graphics.UseQuartz", "true");
}

수도 있습도 살펴보를 사용하여 TextLayout, 로 FontRenderContext 적용할 수 있는 RenderingHints.KEY_FRACTIONALMETRICS.

다른 팁

나는 전문가가 아니지만 여기에 몇 가지 포인터가 아닙니다. Wikipedia에서 이해 한 바와 같이, 문제는 당신의 글꼴이 될 가능성이 매우 높습니다. 긴 인용문에 대한 사전에 사과하지만, 나는 방금 2 개의 Wikipedia 기사를 연결할 수 있었다.

여기 유니 코드 기사에서 ligatures 에 대한 섹션의 일부입니다. > :

ligatures

아랍어 및 데보 나 가리를 포함한 많은 스크립트는 레터 폼의 특정 조합을 특수 합자 형태로 결합시켜야하는 특수 직교 규칙을 갖는다. 합자 형성을 관리하는 규칙은 상당히 복잡 할 수 있으며, 특별한 스크립트 형성 기술을 ACE (1980 년대의 디코타제에 의한 아랍어 붓글씨 엔진)와 같은 특별한 스크립트 형성 기술을 필요로하고 유니 코드의 인쇄 된 버전에서 모든 아랍어 예제를 생성하는 데 사용됩니다. 표준), OpenType (Adobe 및 Microsoft), 흑연 (Sil International), AAT (Apple) 에 대한 개념 증명이되었습니다.

AAT (Apple Advanced Typography) 기사에서 다음 정보를 표시합니다. 전체 기사를 읽는 것이 좋습니다.

AAT 및 openType in Mac OS X

Mac OS X 10.5 Leopard의 경우 OpenType의 부분 지원을 사용할 수 있습니다. 지원은 현재 서양 스크립트 및 아랍어로 제한됩니다 (2011 년 현재). 글꼴에 AAT 테이블이있는 경우 타이포그래피에 사용됩니다. 글꼴에 AAT 테이블이 없지만 OpenType 테이블이있는 경우 시스템이 지원하는 범위에서 사용됩니다.

이것은 서구 또는 중동 스크립트의 많은 OpenType 글꼴을 Mac OS X 10.5에서 수정하지 않고 사용할 수 있지만 태국어와 Devanagari와 같은 남아시아 스크립트는 할 수 없습니다. 이들은 적절한 레이아웃을위한 AAT 테이블이 필요합니다.

및 듀티 글꼴 레이아웃에 대한 섹션의

AAT는 글리프를 완전히 작동하지 않으며 절대로 문자를 사용하지 않으며 글꼴 자체 내에있는 적절한 디스플레이를 생성하는 데 필요한 모든 레이아웃 정보가 있습니다. 이를 통해 특정 글꼴을 추가 할 필요없이 새로운 스크립트에 추가 할 수 있습니다. OS에서 지원합니다.

및 마지막 :

인도 스크립트의 AAT

인도 스크립트의 경우 필요한 유일한 기능은 Glyph가 다시 주문 및 대체입니다. AAT는이 두 가지 모두를 지원합니다. 위에서 언급했듯이 ic in icate 스크립트에 대한 OpenType 글꼴은 Mac OS X에서 제대로 작동하기 전에 AAT 테이블을 추가해야합니다. 그러나이 작업은 OpenType의 시스템 지원에 따라 소프트웨어에만 적용됩니다. OpenType의 자체 구현을 제공하는 프로그램은 OpenType 글꼴로 올바르게 인도합니다. (그러나 그들은 AAT 테이블이 올바르게 인도 된 글꼴을 렌더링하지 않을 수 있습니다.)

Mac OS X 10.5 Devanagari, Gurmukhi, Gujarati, Thai, Tibetan 및 Tamil 용 글꼴이있는 배송. 다른 숫자 스크립트에 대한 글꼴은 제 3 자에서 사용할 수 있습니다.

Devanagari를 명시 적으로 지원하는 글꼴을 선택해야 할 수도 있습니다.

나는 Gurmukhi 스크립트로 일하고있는 프로젝트와 똑같은 문제를 해결하고 있습니다.이제 Mac OS X (Gurmukhi MT, Gurmukhi MN) 및 OpenType 테이블이있는 글꼴이있는 묶음이있는 AAT 테이블을 사용하여 글꼴을 모두 시도했습니다.Mac OS X에서 Java에서 작동하지 않지만 OpenType 글꼴은 약간 읽을 수 있습니다.유일한 문제는 "halant"문자가 필수 문자와 같은 문자의 절반 형태를 렌더링하지 않는다는 것입니다.

문제가 우리가 사용하고있는 글꼴과 Mac OS X에서 Java와의 호환성과 관련이 있다고 생각합니다.

나는 http://jambula.sourceforge.net 타밀어를 위해 Mac에서 를 시도했을 때 동일한 문제에 직면했습니다..

Font.createfont를 사용하여 명시 적 글꼴을로드하기위한 것이 었습니다.

테스트 프로그램을 볼 수 있습니다 : testRendering.java

java org.jambula.image.TestRendering text.png
.

타밀어 텍스트를 text.png 에서 잘못 렌더링합니다.

그러나

java org.jambula.image.TestRendering text.png "/Library/Fonts/Arial Unicode.ttf"
.

가 올바르게 렌더링됩니다.

https://bugs.openjdk.java.net/browse로 인한 것일 수 있습니다./ JDK-7162125 .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top