글꼴 대체 사용

참고

이 항목에서는 ScriptShape 에 대한 모든 설명이 ScriptShapeOpenType에 동일하게 적용됩니다.

 

문자열의 일부 문자가 글꼴에서 지원되지 않거나 애플리케이션이 글꼴에서 지원되지 않는 복잡한 스크립트 를 사용하는 경우 애플리케이션은 텍스트 표시 중에 글꼴 대체를 사용해야 합니다. 애플리케이션이 ScriptShape 함수를 호출할 때 텍스트 레이아웃 프로세스 중에 글꼴 대체 요구 사항이 검색됩니다. 텍스트 표시에 대한 자세한 내용은 Uniscribe를 사용하여 텍스트 표시를 참조하세요.

지원되지 않는 문자에 대한 글꼴 대체 필요 확인

문자열의 일부 문자가 요청된 글꼴에서 지원되지 않는 경우 ScriptShape 에 대한 애플리케이션 호출이 성공합니다. 그러나 애플리케이션은 문자 모양 출력 버퍼에서 누락된 문자 모양이 있는지 검사해야 합니다. 누락된 문자 모양의 문자 모양 인덱스 는 ScriptGetFontProperties를 호출하여 특정 글꼴에 대해 확인할 수 있습니다. 특정 문자 모양을 사용할 수 없는 경우 애플리케이션은 문자 모양에 대해 다른 글꼴로 대체하거나 문자 모양을 사용할 수 없음을 나타내는 그래픽 기호를 렌더링해야 합니다.

지원되지 않는 복합 스크립트에 대한 글꼴 대체 필요 확인

애플리케이션이 표시하는 데 선호하는 글꼴은 텍스트에 필요한 복잡한 스크립트를 지원하지 않을 수 있습니다. 이 경우 스크립트 셰이프 에 대한 애플리케이션 호출이 실패하고 오류 코드가 E_SCRIPT_NOT_IN_FONT.

대체 글꼴 할당

글꼴 대체가 필요하다고 판단되면 애플리케이션에서 대체 글꼴을 할당해야 합니다. 애플리케이션은 다음 기술을 시도할 수 있습니다.

  • 한 호출에 허용되는 반환이 될 때까지 글꼴 목록의 각 글꼴에 대해 ScriptShape 를 호출합니다.
  • 글꼴이 성공하지 않을 것으로 판단될 때까지 목록의 각 글꼴로 ScriptShape 를 호출합니다. 오류 코드가 항상 E_SCRIPT_NOT_IN_FONT 경우 글꼴에서 복잡한 스크립트가 지원되지 않습니다. 문자 모양을 사용할 수 없음을 나타내는 그래픽 기호를 렌더링하거나 스크립트를 정의되지 않음(스크립트 처리 없음)으로 다시 지정하고 다시 시작합니다. 스크립트를 정의되지 않은 것으로 설정하려면 SCRIPT_ANALYSIS 구조체의 eScript 멤버를 SCRIPT_UNDEFINED 설정합니다.
  • 글꼴이 성공하지 않을 것으로 판단될 때까지 목록의 각 글꼴로 ScriptShape 를 호출합니다. 오류 코드에서 일부 문자가 누락된 문자 모양에 매핑되고 있음을 나타내는 경우 문자열을 더 작은 범위로 분할합니다. 더 많은 문자를 렌더링할 수 있도록 여러 글꼴을 하위 범위로 할당할 수 있습니다.

문자 모양 정보 생성

애플리케이션에서 ScriptShape 호출에 성공하는 글꼴을 할당한 후에는 ScriptPlace 를 호출하여 ScriptShape 출력에서 문자 모양 사전 너비 및 2차원 오프셋 정보를 생성할 수 있습니다. 글꼴은 이러한 호출에서 성공해야 합니다. ScriptShape 호출에서 성공한 후 ScriptPlace 호출에서 글꼴 오류가 발생하면 손상된 글꼴이 표시됩니다.

Uniscribe 사용