FreeType2를 이용하여 폰트렌더링 시험중..
DCGUI 라이브러리 :
2007/06/02 22:06
| DCGUI에 폰트렌더러를 탑재하기 위해서 freetype2를 이용해서 데이터가 어떻게 들어가 있고 이를 어떻게 렌더링을 하는지 테스트를 하고 있습니다.. freetype홈페이지의 튜토리얼을 보고 하고 있었는데.. 대략 사용 방법은.. 1.폰트로딩 2.폰트에서 렌더링 할 글자의 glyph인덱스를 구한다. 3.인덱스에 해당하는 glyph를 로드한다. 4.로드된 glyph를 안티엘리어싱, 모노크롬 등 옵션을 주어 렌더링을 한다. 5.렌더링 된 glyph를 자~알 사용한다. 이라고 써져있었습니다. 그래서 우선 위의 5번까지 하고.. 실제 화면에 출력을 해봤습니다. 폰트 크기 50픽셀(굴림체) : ![]() 보시는 바와 같이 아주 잘 렌더링 됩니다. 이제 좀 더 작은 크기를 렌더링 해봤습니다. 폰트크기 10픽셀(굴림체) : 안티엘리어싱이 먹어서 좀 안보이지만 확실히 정상적으로 렌더링이 되었습니다. 이제는 조금 더 큰 크기를 렌더링 해봤습니다. 폰트크기 12픽셀(굴림체) : 12픽셀부터는 깨지기 시작했습니다 .ㄱ- 그래서 이곳저곳을 검색해보니 트루타입 폰트중에 일부는 특정 글자크기에서 비트맵으로 데이터가 반환 된다고 하더군요.. 만약에 비트맵으로 렌더링이 된다면 pixel_mode에 FT_PIXEL_MODE_MONO으로 온다고 하더군요.. 그래서 바로 확인해보니 FT_PIXEL_MODE_MONO가 오는게 맞았습니다. 그런데 모노크롬에서는 이미지가 비트로 표현이 되기 때문에 제대로 렌더링을 할려면 비트로 저장된 모든 이미지 정보를 풀어내야 했습니다. 그래서 열심히 풀어냈건만... 결과는 ㄱ-.. 엉엉엉 ㅠㅠ 뭔가 빠진게 분명했습니다.. 그래서 생각을 해보니.. 비트맵이 정사각형이나 정확히 8의 배수로 저장 된다는 법이 없으므로 제대로 풀어낼려면 실제 비트맵 열의 맨 마지막 행 바이트의 비트 패딩 개수를 알아내야 했습니다. 그런데 분명 튜토리얼에는 그딴건 안보였는데 ㄱ- 예제에도 그런건 없었는데 ㄱ- 튜토리얼 만든분 미어.. 엉엉 ㅠㅠ 이곳저곳 검색을 해보니 glyph 정보에 pitch라는 필드가 있더군요.. 이 필드가 비트맵의 한 행이 가지는 실제 바이트수를 나타내는 것이었습니다.. 분명 튜토리얼에는 없었는데.. 캐소심한 A형 성격 나온다... 그래서 이 값을 이용해서 다음 행의 오프셋을 구해서 다시 코드를 작성했습니다. 그리고 다시 렌더링을 했습니다. 폰트크기 12픽셀(굴림체) : 이제 잘 나오는군요.. 힘들군요 ㄱ- |






댓글을 달아 주세요
결론은?
잘 나온다..
오.. DCGUI는 UI엔진인가요?
넵 UI 엔진입니다.