FreeType 2.1.10 사용해 Mono를 찍는데 밉게 나옵니다.
안녕하세요 오늘 가입했습니다.
제목에서와 같이..
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부분에서 의심을 갖고 확인 중입니다.
이와같은 문제가 있으셨던 분들의 조언부탁드립니다.
첨부 | 파일 크기 |
---|---|
![]() | 26.98 KB |
힌팅 hinting을 바꿔보시는 건?
구글에 잠깐 물어봤는데 딱히 이거다 싶은 건 없네요. autohint 쪽이 켜져 있어서 그렇지 않나 짐작만 해봅니다.
네, autohint 후 fitting한 outline을 가지고 render합니다.
답변 감사합니다 ~
그렇다면, autohint가 켜져 있으면 어떤 문제가 있을 것으로 생각되시는지요?
제 생각에 hinting(or fitting)이 필요하다고 생각됩니다만..
현재 작성한 코드는 truetype font를 사용하고있고요, default로 autohint를 하게 되는데..
hint로 얻어진 정보로 fitting을 하게 되는 것 아닌가요?
FreeType reference문서에 보면,
FT_LOAD_MONOCHROME으로 flag를 setting하면 hinting을 하지 않게 되는데 이렇게 되면 처리를 빠를 수 있으나 모양이 깨끗하지 않아 FT_LOAD_TARGET_MONO 를 하는 것이 더 낫다고 하는 것 같습니다.
배포판이 무엇인지 잘 모르겠지만, 바이트코드 인터프리터가 활성화 되어있는
배포판이 무엇인지 잘 모르겠지만, 바이트코드 인터프리터가 활성화 되어있는 배포판인지 살펴보세요.
http://wiki.kldp.org/wiki.php/BytecodeInterpreter
답변 감사합니다.
ftopion.h의
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
를 활성화 하니 깔끔한 모노글씨가 나타나는군요.
bytecode interpreter라는 것은 처음 알았습니다. 고맙습니다^^
알려주신 링크의 글을 보니.. 기본적으로 제공해주는 autohint는 아무래도 양질의 결과를 주지는 못하는 모양입니다?
그런데 bytecode interpreter 라이센스와 특허문제가 있군요.
bytecode interpreter 없이 양질의 결과를 얻을 방법을 모색해봐야겠습니다.
Re: 네, autohint 후 fitting한 outline을 가지고 render합니다.
autohint는 hinting이 잘 안 되어 있는 글꼴을 위한 기능으로, true로 설정하면 원래
글꼴에 들어 있는 hinting 정보를 무시하고 freetype 자체에서 hinting을 계산해서
글자를 다듬어 줍니다. 따라서 Arial처럼 글꼴 자체 용량보다도 hinting 정보의 용량이
훨씬 더 큰 글꼴에서 autohint 옵션을 켜면 뭉개지는 것이 당연합니다.
글꼴 안에 자체적으로 포함되어 있는 hinting 정보를 해석하는 것이 bytecode
interpreter 입니다. 이게 없으면 Arial 글꼴 같이 대부분의 용량을 hinting이 차지하고
있는 글꼴은 깔끔하게 나오게 할 방법이 없습니다.
댓글 달기