FreeType 2.1.10 사용해 Mono를 찍는데 밉게 나옵니다.

deity4u의 이미지

안녕하세요 오늘 가입했습니다.

제목에서와 같이..
Freetype 2.1.10을 사용해(2.1.9도 마찬가지로) Mono 타입의 폰트(arial, times등)를 찍는데, 모양이 영~ 이상하게 나옵니다.

VFont구조체의 설정값 :
flags = FT_LOAD_TARGET_MONO;
height = Points; // 16

Load와 render flag를 FT_LOAD_TARGET_MONO로만 setting하여 Fitting처리 후 mono로 reder한 bitmap의 포인터를 얻어와 0, 1의 비트에 대해 pixel을 찍어주고 있습니다.

결과 이미지를 파일로 첨부합니다.
이미지 중 윗 부분에 있는 문자가 freetype을 이용해 찍은 mono이고,
아래 있는 문자는 photoshop에서 찍은 mono문자입니다.
freetype으로 찍은 문자 중 보시면 아시겠지만, A자나 O자, U자를 보시면 대칭도 아니도 굵기도 일정치가 않습니다.

순수하게 freetype만을 이용했는데, 왜 정상적인 모양을 얻지 못했는지 모르겠습니다. gray(smooth)는 안티앨리어싱이 되어 아무래도 자연스럽게 나타납니다.

제가 설정을 잘못한 것일까요?
아니면 fitting과정이나 bitmap을 얻어내는 render과정에 문제가 있는 걸까요?
fitting과정과 render과정을 따라가면서 확인하고 있는데,
현재는 render부분에서 의심을 갖고 확인 중입니다.

이와같은 문제가 있으셨던 분들의 조언부탁드립니다.

File attachments: 
첨부파일 크기
Image icon Arial_mine_vs_photoshop.jpg26.98 KB
keizie의 이미지

구글에 잠깐 물어봤는데 딱히 이거다 싶은 건 없네요. autohint 쪽이 켜져 있어서 그렇지 않나 짐작만 해봅니다.

deity4u의 이미지

답변 감사합니다 ~
그렇다면, autohint가 켜져 있으면 어떤 문제가 있을 것으로 생각되시는지요?

제 생각에 hinting(or fitting)이 필요하다고 생각됩니다만..

현재 작성한 코드는 truetype font를 사용하고있고요, default로 autohint를 하게 되는데..
hint로 얻어진 정보로 fitting을 하게 되는 것 아닌가요?

FreeType reference문서에 보면,

FT_LOAD_MONOCHROME
This flag is used with FT_LOAD_RENDER to indicate that you want to render a 1-bit monochrome glyph bitmap from a vectorial outline.

Note that this has no effect on the hinting algorithm used by the glyph loader. You should better use FT_LOAD_TARGET_MONO if you want to render monochrome-optimized glyph images instead.

FT_LOAD_MONOCHROME으로 flag를 setting하면 hinting을 하지 않게 되는데 이렇게 되면 처리를 빠를 수 있으나 모양이 깨끗하지 않아 FT_LOAD_TARGET_MONO 를 하는 것이 더 낫다고 하는 것 같습니다.

익명 사용자의 이미지

배포판이 무엇인지 잘 모르겠지만, 바이트코드 인터프리터가 활성화 되어있는 배포판인지 살펴보세요.

http://wiki.kldp.org/wiki.php/BytecodeInterpreter

deity4u의 이미지

ftopion.h의
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER

를 활성화 하니 깔끔한 모노글씨가 나타나는군요.
bytecode interpreter라는 것은 처음 알았습니다. 고맙습니다^^

알려주신 링크의 글을 보니.. 기본적으로 제공해주는 autohint는 아무래도 양질의 결과를 주지는 못하는 모양입니다?

그런데 bytecode interpreter 라이센스와 특허문제가 있군요.
bytecode interpreter 없이 양질의 결과를 얻을 방법을 모색해봐야겠습니다.

alee의 이미지

deity4u wrote:
답변 감사합니다 ~
그렇다면, autohint가 켜져 있으면 어떤 문제가 있을 것으로 생각되시는지요?

제 생각에 hinting(or fitting)이 필요하다고 생각됩니다만..

현재 작성한 코드는 truetype font를 사용하고있고요, default로 autohint를 하게 되는데..
hint로 얻어진 정보로 fitting을 하게 되는 것 아닌가요?

autohint는 hinting이 잘 안 되어 있는 글꼴을 위한 기능으로, true로 설정하면 원래
글꼴에 들어 있는 hinting 정보를 무시하고 freetype 자체에서 hinting을 계산해서
글자를 다듬어 줍니다. 따라서 Arial처럼 글꼴 자체 용량보다도 hinting 정보의 용량이
훨씬 더 큰 글꼴에서 autohint 옵션을 켜면 뭉개지는 것이 당연합니다.

글꼴 안에 자체적으로 포함되어 있는 hinting 정보를 해석하는 것이 bytecode
interpreter 입니다. 이게 없으면 Arial 글꼴 같이 대부분의 용량을 hinting이 차지하고
있는 글꼴은 깔끔하게 나오게 할 방법이 없습니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.