freetype 예제

freetype 예제

새 면 객체가 작성되면 초기화 하는 동안 모든 요소가 0으로 설정 됩니다. 구조값을 합리적인 값으로 채우려면 FT_Set_Char_Size를 호출해야 합니다. 다음은 300×300dpi 장치에 대해 문자 크기를 16pt로 설정하는 예제입니다. Erik Möller는 렌더러 콜백을 사용하여 다른 색상의 윤곽선으로 컬러 글리프를 그리는 매우 멋진 C++ 예제를 제공했습니다. 소스 코드는 여기에서 찾을 수 있습니다. 왜 이러한 모든 값? 그 이유는 모든 글리프의 크기가 동일하지 않기 때문입니다. FreeType은 캐릭터의 보이는 부분을 포함할 만큼 충분히 큰 이미지를 렌더링합니다. 즉, 마침표 "."에는 매우 작은 비트맵만 있고 "X"에는 큰 비트맵이 있습니다. 이것이 비트맵의 너비와 높이를 아는 것이 중요한 이유입니다. 쉼표 ""와 아포스트로피 "`"는 동일한 비트맵으로 렌더링될 수 있지만 기준선에 대한 위치는 매우 다릅니다. "X" 문자는 기준선에서 시작하지만 그 위에 매우 높은 수준으로 확장되지만 "p" 문자는 높지 않지만 기준선 아래로 떨어지지 않습니다. 이러한 작업을 통해 커서 및 기준선을 기준으로 비트맵의 오프셋을 알 필요가 있습니다.

또한 문자의 가시 크기가 다음 문자에 대한 커서를 얼마나 멀리 이동할지 반드시 알려주지는 않습니다. 스페이스 캐릭터에 대해 예를 들어 생각해보십시오! 또 다른 예는 FreeType의 독립 실행형 B/W 래스터라이저 ftraster.c를 사용하는 방법을 보여 줍니다. FreeType 버전 2.3.10 이상의 파일이 필요합니다. 이 코드 줄은 현재 얼굴에 대해 선택된 charmap에서 지정된 charcode에 해당하는 문자 모양 인덱스를 찾습니다. 유니코드의 UTF-32 표현 양식을 사용해야 합니다. 예를 들어 문자 U+1F028을 로드하려면 0x1F028 값을 charcode 값으로 사용합니다. 이제 변환된 텍스트를 렌더링해 보겠습니다(예: 회전을 통해). FT_Set_Transform을 사용하여 이 작업을 수행할 수 있습니다. 얼굴은 기본적으로 글리프의 모음입니다. 글리프는 일반적으로 단일 문자이지만 분음 부조 또는 합자일 수도 있습니다. 글꼴에는 동일한 문자에 대해 두 개 이상의 문자 가 포함될 수 있으므로 대체 렌더링이 제공됩니다. (예를 들어 우수한 리눅스 리버틴 글꼴의 기능 목록을 참조하십시오.) 유니코드 문자조차도 글꼴 문자 문자에 대한 일대일 매핑이 반드시 있는 것은 아닙니다.

우리는 비록이 모든 복잡성에 대해 잊고, 좋은 오래 된 ASCII 문자 집합에 초점을 맞출 것 이다. 예를 들어 글꼴에서 문자 "X"에 대한 문자 문자 문자를 얻으려면 다음 코드를 사용합니다. 필요한 인코딩에 FT_FREETYPE_H(예: FT_INCODING_BIG5)에 정의된 해당 열거형이 있는 경우 가장 쉽습니다. 이 경우 FT_Select_Charmap을 호출할 수 있습니다. 다음 예제와 같이 매크로 FT_FREETYPE_H를 사용하여 수행해야 합니다. 이제 유니코드 charmap이 포함된 얼굴을 가정하여 8비트 라틴어-1 텍스트 문자열을 렌더링하는 간단한 예제를 제시합니다. 다음은 FT_Outline_Decompose를 사용하여 문자 윤곽선을 SVG 형식으로 변환하는 몇 가지 간단한 C ++ 코드 (정적 작업 LLC에 의해 제공)입니다.

אין תגובות

מצטער, טופס התגובה סגור בשלב זה.