OpenGL에서 Freetype 글꼴을 사용하여 영어가 아닌 유니 코드 텍스트를 렌더링하는 문제

StackOverflow https://stackoverflow.com/questions/2219952

문제

나는 현재 Nehe Tutorial Lesson 43을 따르고 있습니다. http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=43). 이 코드는 유니 코딩 된 언어가 아닌 영어 텍스트에 대해서만 만족스럽게 작동합니다. 다행히도, 나는 Nehe Lesson 43에서 http://www.cs.northwestern.edu/~sco590/fonts_tutorial.html 그리고 하나의 차이 만있는 또 다른 동일한 튜토리얼 샘플을 발견했습니다. W_CHAR을 사용하고 사이트는 영어 이외의 언어로 실행할 수 있다고 주장합니다.

그래서 나는 그것을 시도한다 :

freetype::print(our_font, 320, 200, (unsigned short*)L"Active FreeType Text หกโด้กี่ดุ öáæé おはよ。- %7.2f", cnt1);

함수 인쇄 네임 스페이스 프리 타입 4 번째 인수는*const signiped short **라고 주장합니다. 또한 Longate의 Longater에 대한 이중 인용 문자열 앞에 L을 넣고 테스트 목적으로 아시아 캐릭터를 넣었습니다.

결과는 모든 영어 텍스트가 잘 표시 될 수 있지만 모든 태국 캐릭터는 [] B [] i [] 5H [] 8"가됩니다. []는 사각형 상자입니다. 내가 이해 한 바에 따르면, 이것은 글꼴에 지정된 언어가 없다는 것을 의미하므로 다른 글꼴을 시도했지만 다른 모든 태국 글꼴은 동일한 사각형 상자를 제공합니다. 일본 글꼴의 경우 동일합니다. 모든 상자와 함께 옆에있는 영어 문자와 함께. 서브 스트링 Öáæé는 아무런 문제없이 잘 렌더링되고 있습니다.

여기서 뭔가를 잊고 있습니까? 여기에 영어 이외의 유니 코드 언어를 어떻게 표시 할 수 있습니까?

도움이 되었습니까?

해결책

다행스럽게도 저자는 자신의 웹 사이트에 수정 된 튜토리얼의 수정 된 버전을 업로드했으며 (질문에 지정됨) WCHAR_T (원본 버전에서는*Const Unsigned Short **를 인쇄 함수의 인수로 사용합니다). 영어가 아닌 언어를 허용합니다.

다른 팁

레슨 43의 print ()가 유니 코드가 가능한 곳도 없을 것 같습니다. Nehe가 수행하는 모든 Nehe는 UTF8 문자열을 수락하지 않고 Freetype의 경우 UTF32로 변환하지 않고 처음 256 개의 ASCII 문자에 대한 256 개의 디스플레이 목록을 작성하는 것입니다.

음역 이것 C ++에 들어가는 것은 저에게 아주 잘 작동했습니다.

또한 사본을 잡으십시오 gnu unifont 모든 것을위한 글리프가 있는지 확인하기 위해 BMP.

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