'freetype2'에 해당되는 글 1건

  1. 2010.11.22 Freetype2 짜짤한 처리
2010. 11. 22. 11:35

Freetype2 짜짤한 처리


이전 프로젝트 할때도 프리타입2를 사용했는데, 이번 회사와서도 붙이는 작업을 했다.
기존에는 GDI를 쓰고 있었는데, 중국쪽에서 바꿔달라고 했는거 같다. 여튼 작업시작은 이러한데,

중국쪽 폰트를 하면서 추가된 내용과
여기는 한글자씩 미리 찍어두는 시스템이라 추가된 내용을 정리해야 할듯 하다.

중국쪽 폰트하면서 추가된 내용으로는

-- FreeType Font에서 FT_PIXEL_MODE_MONO 로드부분

-- [출처] FreeType Font에서 FT_PIXEL_MODE_MONO 로드부분.|작성자 샤르봉
특정폰트 특정크기 이하에서 폰트값이 0~256이 아닌 bit단위로 나오는 문제 해결

겜에서 사용하는 폰트 크기가 20pixel정도였는데 한글로 출력할때는 위와 같은 문제가 없었는데,
중문에서는 바로 문제가 되더라... 여튼 이거 위에꺼 보고 고쳤고

한글자씩 미리 찍어두는 시스템에서 추가된 내용으로는

http://www.winapi.co.kr/project/library/freetype/ft1.htm
http://www.winapi.co.kr/project/library/freetype/ft2.htm
http://www.winapi.co.kr/project/library/freetype/ft3.htm
http://www.winapi.co.kr/project/library/freetype/ft4.htm
http://www.winapi.co.kr/project/library/freetype/ft5.htm
http://www.winapi.co.kr/project/library/freetype/ft6.htm
http://www.winapi.co.kr/project/library/freetype/ft7.htm

위의 메뉴얼이 잘되어 있느니까 알아보고
문제는 베이스라인 계념인데 위에꺼 다 읽어봐도 결국 베이스라인 어캐 구한다는 없어서...

http://www.gpgstudy.com/forum/viewtopic.php?p=96321&sid=e6202af07a3e2b090a046918f41ae5f0
위의 글을 참고하면 될듯

int baseLine;

int ascender;
if (FT_IS_SCALABLE(face))
{      
  float y_scale = face->size->metrics.y_scale * 1.0f/64.0f * (1.0f/65536.0f);
  ascender = int(face->ascender * y_scale);
    
}
else
{
  ascender = int(face->size->metrics.ascender * 1.0f/64.0f);
    
}
  
baseLine = FONT_HEIGHT - ascender;


위의 소스가 답인듯.. 참고로 픽셀 단위


아직도 뭔가를 더 고쳐야 할듯한데 좀 봅시다.



아 그리고 폰트 라이버리 버전 올려서 달면 폰트가 깨끗해지는듯한 느낌이?? 킁.. 이건 아닌가. 여튼 최신 버전 사용합시다.