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만으로 간단하게 만들어 볼까했는데 한계가 있었군요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.