2010-06-02 5 views
1

이것은 주로 재미를위한 것입니다. 나는 주변을 샅샅이 뒤지고 몇 가지 글꼴을 찾아 내고 싶습니다. 몇 가지 질문이 있습니다. 누군가 이런 종류의 일을했다면 정말 도움이됩니다.즐거움과 이익을위한 OpenType 폰트 구문 분석 (누구나이 어리석은 테이블을 이해할 수 있습니까?)

내가 함께 테스트입니다 글꼴은 서로 다른 형식의 여러 cmap를 서브 테이블을 포함

cmap를 테이블. 나는 그것들을 읽을 수 있지만, 내가 사용해야 할 것을 이해하지 못한다. 즉. 가장 적합한 서브 테이블을 선택하기위한 전략은 무엇입니까? 이것은 심지어 의미가 있습니까?

이 정말 내 머리에 상처를하고있다

glyf 테이블. 나는 on here이 될 것입니다. 그 페이지에서 두 번째 테이블을 보면, 'n'endPtsOfContours, 'n'명령어와 'n'플래그가 있지만 윤곽선과 같은 수의 플래그가 있는지는 분명하지 않습니다 (얼마나 많은 윤곽선을 가지고 있는지 알고 있습니다. 나는 가지고있다). 그런 다음, 상황을 악화시키기 위해 (재미 있습니다!) 저는 xCoords 배열과 yCoords 배열을 가지고 있습니다. 이 배열은 불확정 길이로 보이며 BYTE 또는 SHORT 중 하나의 데이터를 포함 할 수 있습니다.

좋아,이게 지침과 플래그가있는 것 같지만 아마도 어떻게 처리해야할지 모르겠다. 좌표 데이터에 액세스하려면 트루 타입 인터프리터가 필요합니까?

+1

파이썬의 [FontTools] (http://sourceforge.net/projects/fonttools/)는 OTF 해킹에 매우 유용합니다. – bobince

+0

고마워요. @bobince 이렇게 할 수있는 코드는 큰 도움이됩니다. – hooleyhoop

답변

1

물론 정확합니다.

플래그 비트 1 : 설정되면 해당 x 좌표는 1 바이트입니다. 설정되지 않은 경우 2 바이트입니다.

플래그 비트 2 : 설정되면 해당 y 좌표는 1 바이트입니다. 설정되지 않은 경우 2 바이트입니다. C에서 물론 -

은 내가 전에 트루 타입 테이블을 걸어 코드를 썼다. 결과를 TTFDump의 출력과 비교할 수 있다고 가정합니다 (여전히 사용 가능합니다 from Microsoft).

+0

감사합니다. @egrunin 저는 많은 플래그와 코드를 볼 수 없지만, TTFDump의 출력은 큰 도움이 될 것입니다. – hooleyhoop

+0

그래서 몇 가지 글꼴에 TTFDump를 사용했고 꽤 명확합니다. – hooleyhoop

0

cmap 인코딩의 경우 인코딩 ID가 10 또는 1 (플랫폼 ID 목록이 name table 인 플랫폼 ID = 0 또는 플랫폼 ID = 3)이고 cmap 형식이 12 (완전한 유니 코드 공간) 이상 4 (기본 다국어 비행기 만). 그 후, 인코딩의 상대적인 우선 순위는 완숙, BIG5, PRC, Shift-JIS ...}가되지만, 폰트는 주로 일본어, 중국어 또는 한국어 글꼴이기 때문에 덜 중요합니다. 한 번에. 형식 4와 12는 0, 2, 6보다 훨씬 많이 사용됩니다. 형식 14는 형식 4 또는 12에 대한 보완어로 변형 선택자가있는 CJK 글꼴에서 찾을 수 있으며 형식 13은 특수한 "최후의 수단"글꼴 (폰트 대체 중에는 주어진 텍스트를 지원할 좋은 선택이 없을 때 사용됨).