[완료]freetype2 한글 깨짐 문제입니다.
글쓴이: poplinux / 작성시간: 수, 2008/07/02 - 9:17오후
MIPS 기반의 uclinux 에서 작업중입니다.
우선 freetype-2.3.7 버전을 크로스 컴파일하여 라이브러리를 설치했습니다.
일전에 다른 플랫폼에서 사용하던 완성형 폰트와 폰트를 사용하기 위해 작성해 두었던 api 를 가져와서 테스트를 진행했습니다. (모두 이전 플랫폼에서 정상적으로 사용하던 녀석들입니다.)
우선 영문은 아무런 문제없이 화면에 출력됩니다.
문제는 한글인데, 제가 알기론 freetype 자체에서 한글을 지원하는 것으로 알고 있었는데 화면에 박스 형태로 깨져서 표현이 됩니다.
웹을 검색한 결과 freetype 은 기본이 유니코드를 지원하기 때문에 유니코드 폰트를 사용해야 한다라는 정보를 구할 수 있었습니다.
현재 제가 사용중인 폰트는 완성형 폰트이고 euc-kr 환경입니다. 이 상황에서 freetype 을 사용하기 위해서는 어떤 방향으로 방법을 찾아가야 할까요?
Forums:
php gd 에서 charmap
php gd 에서 charmap 부분을 봤습니다.
비슷하게 따라하면 될거라 생각합니다.
http://php.net/ 의 최신 소스를 풀어서
ext/gd/ 에서 찾아보시면 big5 와 jis 를 처리하는 부분이 나옵니다.
emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~
http://xenosi.de/
https://xenosi.de/
제가 아는 바로는 ...
폰트마다 인코딩 타입이 있는 것으로 알고 있습니다. FT_Face->charmap->encoding 쪽을 보시면 될거 같습니다.
----
한 발자국, 한 발자국 - 언젠가는 도약하리라 ~
----
한 발자국, 한 발자국 - 언젠가는 도약하리라 ~
인코딩 정보 같은
인코딩 정보 같은 것은 명확히 넘어간 것을 확인했습니다.
디버거로 다음과 같이 출력이 됩니다.
(gdb) p *font_face->charmap
$5 = {face = 0x100080a8, encoding = FT_ENCODING_WANSUNG, platform_id = 3, encoding_id = 5}
코드를 따라가다보니 결국 다음과 같이 인덱스를 얻어 내는 것을 확인했습니다.
glyph_index = FT_Get_Char_Index(face, char_code);
freetype 설명서를 보니까 FT_Get_Char_Index 의 리턴값이 0 이 나오면 해당 코드를 찾지 못했다는 뜻이더군요.
결국 char_code 를 넘겨 주는 방법이 잘못되었던가 그 전단계 셋팅 쪽에 문제가 있을 것 같습니다.
그런데 제가 사용하려고 하는 것은 완성형 캐릭터 셋인데 이 캐릭터 셋은 어디에 들어가 있는 거지요?
libc? libcharset? 아니면 여기서는 freetype?
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
해결했습니다.
해결했습니다.
완성형 한글의 인덱스를 얻기 위해서는 한글일 경우엔 다음과 같이 2Byte 로 변경해서 보내줘야 합니다.
위 알고리즘만 보면 아주 간단한 내용인 걸 알 수 있습니다. 3번째 줄을 보면 출력한 문자가 "한글" 로 판정되면 2byte 로 묶어 주는 기능을 하게 됩니다.
문제는 뭐였냐면..
함수 프로토타입이 문제였습니다.
renderText(char *text.......)
text 가 char 로 선언되어 있어서 표현할 수 있는 범위가 -128 ~ 127 사이로 한정되니까 소스중에 4번째 줄은 항상 실패가 될 수 밖에 없었습니다.
그러니 제대로된 2byte 코드가 생성될 수 없었던게 원인이었습니다.
이전에 사용한 시스템에서는 잘 되었었던게 실은 버그가 있는 소스가 아주 운좋게 동작하고 있었던 것 뿐이었습니다.
도움 주셔서 감사합니다.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
댓글 달기