2010-07-05 1 views
4

ttf를 읽고 버퍼에있는 글꼴로 텍스트를 그려야합니다. 이 작업을 수행하는 freetype, gd와 같은 라이브러리가 있지만 직접 작성한 코드를 작성하려고합니다. 이 작업을 수행하는 방법에 대해 조언 해 주시겠습니까?C에서 트루 타입 글꼴 파싱

+0

글꼴 설정 (커닝, 앤티 앨리어싱, 서체, 서체)에 익숙하십니까? The Metafont (TTF의 Font System, TTF의 Complexity와 비교할 수있는)의 약간을 grok하기 위해 오랜 시간이 필요했습니다. –

답변

6

글꼴, 활판 인쇄 및 작문 시스템 분야에서 세계 최고 전문가가 아닌 한 대답은 간단합니다 : DO NOT. 트루 타입/오픈 타입은 정확한 렌더링을 지원하기 위해 필요한 많은 테이블을 가지고 있으며 FreeType (극도로 낮은 수준의 라이브러리 임)을 사용할 때조차도 대부분의 사람들은 잘못 이해합니다.

플랫폼 전반에 걸친 낮은 수준의 결정 론적 글꼴 처리를 수행해야한다면 최소한 FreeType과 libotf를 사용해야합니다. 이렇게하면 글리프와 윤곽선에 대한 액세스가 제공되어 원하는대로 렌더링 할 수 있습니다. 대부분의 경우 GUI 시스템의 텍스트 렌더링 루틴을 사용하는 것이 훨씬 쉽고 오류가 발생하기 쉽습니다.

마지막으로, 내 조언을 무시하면 TrueType/OpenType 글꼴의 테이블을 설명하는 Microsoft의 온라인 리소스와 FreeType의 RTFS가 적합 할 것입니다.

-1

R .. 내가 내 의견에서했던 것과 같은 시간을 썼다. 나는 독자적으로 다른 TTF 파서를 만들 것을 제안하지 않을 것이다. 당신이 컴퓨터 과학의 바로 "spannende"분야를 배우고 자한다면, Donald E. Knuth의 "The Art of Computer Programming"2 권을 추천 할 것입니다. (이 메타 글꼴이 아닌 TTF이지만

  • 모든 오픈 소스 TTF 찾기 찾을 수 있습니다

  • 2

    나는 모든 TTF의 문서를 읽고 당신에게

    1. 을 제안 올바른 :-) 입증 파서 + 렌더러는 Freetype (c/C++), Batik (java) 및 기타 Google에서 찾을 수있는 다양한 언어로 제공됩니다. 또한 George Williams의 fontforge는 여행 중에 매우 도움이 될 것입니다.

    2. 1.에서 수집 한 모든 프로그램을 추출하고 작동 방식을 확인하십시오. 문자 "I"의 윤곽선에 대한 점 목록을 덤프하는 것과 같이 간단한 간단한 예제 프로그램을 만들 수 있는지 확인하십시오.

    3. 래스터 화 작업을하십시오. 문자 "l"을 래스터 화하는 것과 같이 매우 간단한 것으로 시작하십시오.

    TTF의 문제점은 간단한 파일 형식이 아니라는 것이며 freetype이 많은 미친 세부 사항을 처리한다는 것입니다. 그러나 이식성에 신경 쓰지 않고 렌더링 할 특정 TTF 파일이 이미 있고 라틴어 나 키릴 어 같은 작은 간단한 알파벳 만 신경 쓰면 괜찮을 것입니다.

    또한 시도하는 유혹을 다른 사람을 위해, 내가 https://github.com/donbright/font_to_svg/

    0

    불가능하지 내 작은 프로젝트에 링크 TTF 문서의 목록을 확인 할 수 있습니다. 내가 DIY 그래픽 접근법을 좋아해서 메모리를 할당하고 쓰기를 한 다음 jpg 또는 png로 저장하는 것이 궁금 해서요. 나는 giflib에서 bitmap 폰트를 불법 복제했으나, 이것은 8x8 픽셀로 엄격히 적용됩니다.

    몇 가지 링크 : http://stevehanov.ca/blog/index.php?id=143 https://github.com/kv01/ttf-parser https://www.google.com/search?q=ttf+parser+c&ie=utf-8&oe=utf-8

    내가 사 들여 쓰기를하고, {} 버튼을 사용하지만 라인은 아직 포장했습니다.