2012-05-25 1 views

답변

5

당신은 텍스트와 코어 텍스트를 사용하여 글꼴의 경로를 얻을 수 있습니다에 어떻게해야합니까. CTFontCreatePathForGlyph이라는 핵심 텍스트 메서드가 있는데, 주어진 심볼의 주어진 글리프에 대한 경로를 제공합니다. 이를 사용하여 모든 글리프의 경로를 얻을 수 있습니다.

this article about "low-level text rendering"을 살펴 봐야합니다. this article의 샘플 코드를보고 텍스트의 경로를 얻는 방법 (Core Animation을 사용하여 쓰는 방법)을 살펴볼 수도 있습니다.

+0

이에 대한 준비 솔루션은 현재이되지 않습니다? CTFontCreatePathForGlyph에는 CGGlyph와 CTFontRef가 필요합니다. 어떻게'strin "Hello world"와 폰트 이름에서 가져올 수 있습니까? "Courier"' – Dmitriy

+0

Ole Begemann의 기사에서 두 번째 비디오를 보면 그는 "hello world"라는 텍스트를 쓰고 있습니다. 그는 또한 [GitHub] (https://github.com/ole/Animated-Paths)에서이 작업을 수행하는 데 사용하는 코드를 게시했습니다 (게시물의 설명대로). 그가 어떻게 그곳에서 그것을하는지보십시오. –

1

FreeType library 글꼴 파일의 넓은 범위의 로딩을 지원 (폴리 라인이 포인트의 단지 목록입니다 동안 경로 호와 곡선을 포함 할 수 있기 때문에) 당신은 여전히 ​​폴리 라인의 경로를 변환해야합니다 (트루 타입, 포스트 스크립트 등). FreeType 엔진은 글꼴을로드하고 비트 맵에 렌더링 할 수 있지만 자세한 글리프 정보를 반환 할 수도 있습니다.

FT_Outline_Decompose 함수를 사용하면 FT_Outline을 사용하여 구성 선, 호 및 곡선으로 분해 할 수 있습니다. 윤곽 처리 중에 호출 될 struct FT_Outline_Funcs 구조체에 일련의 함수 포인터를 제공하기 만하면됩니다. 이 함수는 사용자에 의해 정의되므로 응용 프로그램에 가장 적합한 형식 (예 : 폴리 라인)으로 변환 할 수 있습니다.

이 API 참조 :

  • FT_Outline_Decompose()
    • 당신이 렌더링 각 프레임에서 일련의 곡선을 작성 자주 변경되지 않는 텍스트의 큰 블록을 렌더링하는 경우 것은 매우입니다 비싼. 일반적인 해결책은 포인트 크기를 선택하고 필요한 모든 글리프를 텍스처로 렌더링하고 텍스쳐 아틀라스를 사용하여 문자열을 쿼드로 렌더링하는 것입니다.

      유용한 정보는 FreeGL 사용법에 대한 이야기가 있지만 글꼴에 대한 OpenGL FAQ 중 하나에 게시되어 있습니다. 텍스처 아틀라스 기술은 가치가 독서 :

    +0

    @David Rönnqvist의 대답은'CTFontCreatePathForGlyph'를 사용하는 것이 더 나은 대답입니다. 그래서 +1하십시오. 나는 CoreText에 대해 기억해야만했다! FreeType은 종종 OpenGL에서 글꼴을 지원하는 데 사용되며 다중 플랫폼 개발에 유용 할 수 있습니다. – gavinb

    +0

    FWIW, iOS는 Apple 자체 코드를 사용하는 Mac OS X과 달리 장면 뒤에서 FreeType을 사용합니다. – alastair

    +0

    @alastair 아주 흥미 롭습니다 - 나는 두 플랫폼에서 모두 같다고 생각했습니다.이 경우 기본 FreeType 지원에 직접 연결하는 것이 실용적인 대안입니다. – gavinb