다음을 통해 공유


복잡한 스크립트 처리

텍스트 근거를 제공하기 위해 애플리케이션은 두 가지 방법 중 하나를 사용할 수 있습니다. 다국어 근거의 간단한 구현을 위해 애플리케이션은 ScriptJustify호출해야 합니다. kashida를 먼저 고려하고, 다음으로 단어 간 간격, 그리고 문자 간 간격을 고려하여 델타 dx 배열을 생성합니다. 보다 정교한 근거를 위해 애플리케이션은 자체 언어 지식과 SCRIPT_VISATTR 배열에서 ScriptShape 검색한 정보를 사용하여 업데이트된 델타 dx 배열을 생성할 수 있습니다.

조정 공간 또는 kashida는 uJustification 멤버로 SCRIPT_VISATTR에서 식별되는 위치에 삽입해야 합니다. 문자 간 근거를 수행할 때 애플리케이션은 SCRIPT_JUSTIFY_CHARACTER 표시된 문자 모양 뒤에만 추가 공간을 삽입해야 합니다.

애플리케이션은 ScriptXtoCPScriptCPtoX를 사용하여 캐럿 배치와 적중 테스트를 수행합니다. 자세한 내용은 캐럿 배치와 적중 테스트 관리하기를 참조하세요.

글꼴 독립적 방식으로 너비를 가져오기 위해 애플리케이션은 ScriptGetLogicalWidths호출합니다. ScriptApplyLogicalWidth논리 너비를 전달하면, 원래 글꼴을 사용할 수 없는 경우에도 동일한 경계 내에서 텍스트 블록을 품질 손실이 허용되는 수준에서 다시 표시할 수 있습니다. 문자 모양의 너비 배열(advance 너비)을 생성하여 ScriptTextOut에 전달하기에 적합합니다. 글꼴 독립적 방식으로 사전 너비 정보의 이러한 기록 및 다시 적용은 애플리케이션에서 정의한 형식의 메타파일링과 같은 상황에서 유용할 수 있습니다.

메모

메타파일은 문자 모양 인덱스를 지원하지 않습니다. 향상된 메타파일을 작성하려면 애플리케이션에서 ExtTextOut 사용하고 논리 문자를 직접 작성해야 합니다. 이 메커니즘을 사용하면 텍스트가 재생될 때까지 문자 모양 생성 및 배치가 발생하지 않습니다.

 

기본값, 공백, kashida 등에 사용되는 특정 문자 모양을 검색하려면 현재 글꼴에 대해 애플리케이션에서ScriptGetFontProperties를 호출해야 합니다. 선택한 글꼴에서 지원되는 실행 문자를 확인하기 위해 애플리케이션은 ScriptGetCMap호출합니다. 사용할 수 없는 문자는 글리프 버퍼에서 기본 글리프로 대체됩니다. 글꼴이 단일 문자 모양 대신 문자 모양 조합을 사용하여 문자를 렌더링하는 경우 이 메서드는 실패합니다. 예를 들어 00C9; 라틴 대문자 E 위에 악센트 부호는 대문자 E 글리프와 악센트 글리프를 사용하여 렌더링할 수 있습니다. 이러한 종류의 코드 포인트가 포함된 문자열에 대한 글꼴 지원을 확인하기 위해 애플리케이션은 ScriptShape호출할 수 있습니다. 자세한 내용은 셰이핑 엔진 사용하기를 참조하세요.

ScriptCacheGetHeight 함수는 글꼴 캐시에서 글꼴의 높이를 반환합니다. ScriptGetProperties 스크립트로 인덱싱된 모든 스크립트에 필요한 특수 처리에 대한 정보를 제공합니다. 예를 들어 스크립트와 연결된 기본 언어, 스크립트가 숫자인지 여부를 나타내는 데이터 및 스크립트가 복잡한 스크립트인지 여부를 나타내는 데이터가 포함됩니다.

ScriptGetGlyphABCWidth 문자 모양 차트를 그리는 데 유용할 수 있는 지정된 문자 모양의 ABC 너비 반환합니다. 그러나 일반적인 복잡한 스크립트 텍스트 서식에는 사용하지 않아야 합니다.

유니스크라이브 사용하기