캐싱(국제화)
Uniscribe는 유니코드-문자 모양(cmap) 매핑, 문자 모양 너비 및 OpenType 스크립트 셰이핑 테이블을 저장합니다. 특정 크기의 특정 글꼴에 대한 테이블에 대한 핸들을 "스크립트 캐시"라고 합니다. 많은 Uniscribe 함수는 디바이스 컨텍스트 핸들 매개 변수와 SCRIPT_CACHE 구조체에 대한 포인터를 모두 호출합니다. 이러한 함수는 필수 테이블이 아직 캐시되지 않은 경우에만 디바이스 컨텍스트를 사용하여 스크립트 캐시를 통해 정보를 먼저 찾습니다. ScriptShape, ScriptPlace 또는 ScriptTextOut 함수를 호출할 때 애플리케이션은 SCRIPT_CACHE 구조체에 대한 포인터를 전달해야 합니다. 핸들은 애플리케이션이 처음으로 Uniscribe 함수에 전달하기 전에 NULL 로 초기화해야 합니다. 애플리케이션은 다른 글꼴 또는 다른 크기에 대해 동일한 핸들을 전달해서는 안 됩니다.
애플리케이션은 언제든지 스크립트 캐시를 해제할 수 있습니다. Uniscribe는 글꼴 및 쉐이퍼 캐시에서 참조 횟수를 유지 관리하고, 글꼴의 모든 크기가 해제된 경우에만 글꼴 데이터를 해제하고, 쉐이퍼가 지원하는 모든 글꼴이 해제된 경우에만 쉐이퍼 데이터를 해제합니다. 애플리케이션이 스타일로 완료되면 ScriptFreeCache 함수를 호출하여 스타일에 대한 스크립트 캐시를 해제해야 합니다.
ScriptShape 및 ScriptPlace의 경우 애플리케이션이 null 디바이스 컨텍스트를 전달하는 것이 유효합니다. 필요한 테이블이 이미 캐시되어 있으므로 대부분의 경우 호출이 성공합니다. 셰이핑 또는 배치에서 디바이스 컨텍스트에 액세스해야 하는 경우 ScriptShape 또는 ScriptPlace 는 E_PENDING 오류 코드와 함께 즉시 반환됩니다. 그런 다음, 애플리케이션은 디바이스 컨텍스트에서 글꼴을 선택해야 합니다. 대부분의 애플리케이션에서는 SelectObject를 호출하여 디바이스 컨텍스트 핸들을 반복적으로 준비하지 않도록 하여 성능을 향상할 수 있습니다.
관련 항목