2010-08-03 1 views
2

diacriticals (물결표, 악센트 등)이 포함 된 i18n 텍스트를 렌더링해야하는 iPhone 앱을 작성하고 있습니다. Apple은 주어진 서체/글꼴 크기 조합의 앞과 뒤, 내림 등을 얻는 데 사용할 수있는 UIFont 클래스를 제공합니다.UIFont 및 분음 기호

이 정보는 발음 구별 부호를 정확하게 반영하지 않습니다. 특히 대문자의 분음 기호는 종종 lineHeight (이전에는 leading으로 알려진 UIFont 속성)를 초과합니다.

동일한 문제가 프레임 워크 전체에 존재합니다. NSString:sizeWithFont에도 같은 문제가 있습니다.

텍스트 그리기를 지원하지 않는 OpenGL을 사용하고 있으므로 텍스처에 텍스트를 렌더링해야하므로 텍스트의 실제 경계 상자를 알아야합니다.

현재이 문제를 해결하기 위해 해킹을 사용하고 있습니다. 더 좋은 방법이 있습니까?

답변

2

크기를 반환하기 때문에 NSString을 사용할 수 없습니다. 경계 상자를 반환하는 것을 지원하는 것으로 보이는 CoreText를 시도해 볼 수는 있지만 과장 될 수 있습니다.

유니 코드가 è 같은 것을 지원할 때 어려운 문제입니다 (참조 : zalgo); 사물은 줄 맨 위에 렌더링 할 수 있으므로 캐릭터를 그릴 수는 없습니다. 일부 텍스트 드로잉 API는 기준선을 지정하고 오벨더와 디 센더를 모두 얻을 수 있도록 경계 상자를 제공하지만 UIKit에서는이를 수행하지 않습니다.

그런 다음 가끔씩 커다란 어 센더가있는 미안한 초체체 글꼴이 있습니다. 이것들을 다루는 방법이 불분명합니다.

게으른 방법은 위쪽과 아래쪽에 여백이있는 텍스처 (0.5 줄 ~ 1 줄?)에 렌더링하는 것이고 일부 투명 픽셀의 추가 오버 헤드는별로 신경 쓰지 않습니다.

CoreText를 많이 보지는 않았지만 특히 유망하지는 않습니다.

+0

"게으른 방법은 위쪽과 아래쪽에 여백이있는 텍스처 (0.5 줄 ~ 1 줄?)로 렌더링하는 것이고 일부 투명 픽셀의 추가 오버 헤드는별로 신경 쓰지 않아야합니다." 그래, 그게 내가하고있는 일이야. 응답 해 주셔서 감사합니다. –