2011-04-19 2 views
0

트루 타입 글꼴을 벡터화하여 Direct3D 프리미티브로 렌더링하는 중입니다. 지금까지 GetGlyphOutline을 사용하여 글리프를 추출하고이를 기본 목록 프리미티브로 렌더링했습니다. 어쨌든, 간격에 ...Truetype 글꼴 간격?

어떻게 문자 사이의 간격을 알 수 있습니까? 또는 어떻게 결정됩니까? 공백은 공백이 아닌 글꼴에 따라 다릅니다.

간격을 결정하기 위해 GDI + 또는 다른 창 함수 호출이 있습니까?

+0

여기에 질문을 던졌습니다. http://stackoverflow.com/questions/42737846/true-type-font-format-pen-position-advance-width-and-kerning – user18490

답변

0

나는 direct3d에 대해 아무것도 몰라.하지만 메트릭 직후에 그들은 서체 커닝 테이블에 저장되어있다. GetKerningPairs은 문자 쌍의 올바른 배치를 알려줍니다.

1

글꼴의 hmtx 테이블에 저장된 글자의 진행 너비 또는 세로 텍스트의 경우 vmtx를 참조합니다. DirectWrite가 아닌 GDI를 통해 다음과 같이 사용할 수 있습니다.

  1. GetCharABCWidthI glyph ids 배열이 이미있는 경우 사용할 수 있습니다. 이 접근법은 확장 된 CJK를 포함하여 유니 코드의 모든 문자를 지원할 수 있으며 더 낮은 기본 다국어 평면이 아닌 이집트의 heiroglyphics와 같은 새로운 추가 기능을 지원합니다.
  2. 문자 너비에 대한 GetCharWidth32 - 기본 평면으로 제한되지만 단순 옵션입니다.
  3. GGO_METRICS로 GetGlyphOutline을 호출하고 gmCellIncX를 사용하십시오. 이렇게하면 아마도 관심있는 것보다 많은 필드가 반환됩니다.

은 커닝은 'A'와 'V'는 심미적 인 목적을 위해 쉬프터 가까이 될 것 단어 "아바타"에서와 같이 공칭 사전에 추가 옵션 조정이다.