cairo에서 한글 출력이 안됩니다!

rootroot의 이미지

cairo_show_text (cr,"안녕하세요?") 로 코딩하면
화면에 □□□□□? 이렇게 네모로 처리되던데 해결법이 없을까요?
찾아보니까 cairo-m17n 라이브러리? 파일이 있긴 하던데 이건 오래되서 그런지 컴파일이 안되서리...

Prentice의 이미지

폰트에는 한글이 들어가 있는 게 맞나요? 정확히 어떤 폰트가 사용되고 있는지도 한번 확인해보세요.

rootroot의 이미지

지금 pango 라이브러리랑 혼합해서 코딩하니 한글이 잘 나오긴 하는데 뭔가 더 간단한 방법은 없을까요?

아래는 지금 수정한 소스코드입니다. 이것보다 더 간단하게 한글 출력하는 코드는 없을까요?

cairo_t *cr;
PangoLayout *layout;
PangoFontDescription *desc;
cr = gdk_cairo_create(widget->window); //위젯은 gtk 윈도우입니다.
layout = pango_cairo_create_layout(cr);
cairo_set_source_rgb(cr, 0.1, 0.1, 0.1);
desc = pango_font_description_from_string("Sans 10");
pango_layout_set_font_description(layout, desc);
pango_font_description_free(desc);
cairo_move_to(cr, 0, 30);
pango_layout_set_text(layout, "안녕하세요?",-1);//한글 출력
pango_cairo_show_layout (cr, layout);

익명 사용자의 이미지

http://cairographics.org/FAQ/#using_pango

읽어보시면 아시겠지만, Cairo의 문자열 출력 API는 간단한 테스트 용도에 한정되어 있고, 특히 "한 폰트"만 사용할 수 있습니다. (즉 Serif와 같은 폰트셋이 안 된다는 뜻인 듯,.. 첫 매치된 폰트가 사용되는 것 같습니다.) 위 홈페이지의 예제로 시험해 보니, 폰트를 "NanumMyeonjo"로 지정하면 한영문이 다 잘 나오고, "serif"로 두면 영문만 잘 나옵니다.

그런 이유로 해서 페이지에서도 예제 이상의 프로그래밍에서는 Pango의 사용이 필수적임을 명시하고 있습니다. 해서 결론은 더 간단한 방법은 없다고 하겠습니다.

rootroot의 이미지

인터넷에 pango 관련 튜토리얼이 없어 cairo만으로 간단하게 만들어 볼까했는데 한계가 있었군요.