복잡한 스크립트 처리

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

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

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

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

참고

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

 

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

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

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

Uniscribe 사용