다음을 통해 공유


SCRIPT_PROPERTIES 구조체(usp10.h)

각 스크립트에 대한 특수 처리에 대한 정보를 포함합니다.

구문

typedef struct {
  DWORD langid : 16;
  DWORD fNumeric : 1;
  DWORD fComplex : 1;
  DWORD fNeedsWordBreaking : 1;
  DWORD fNeedsCaretInfo : 1;
  DWORD bCharSet : 8;
  DWORD fControl : 1;
  DWORD fPrivateUseArea : 1;
  DWORD fNeedsCharacterJustify : 1;
  DWORD fInvalidGlyph : 1;
  DWORD fInvalidLogAttr : 1;
  DWORD fCDM : 1;
  DWORD fAmbiguousCharSet : 1;
  DWORD fClusterSizeVaries : 1;
  DWORD fRejectInvalid : 1;
} SCRIPT_PROPERTIES;

멤버

langid

스크립트와 연결된 언어의 언어 식별자입니다. 스크립트가 여러 언어에 사용되는 경우 이 멤버는 기본 언어를 나타냅니다. 예를 들어 프랑스어, 독일어 및 기타 유럽 언어에도 사용되지만 서양 스크립트는 LANG_ENGLISH 표시됩니다.

fNumeric

유니코드 양방향 알고리즘의 규칙에 따라 숫자를 작성하는 데 사용되는 숫자 및 기타 문자만 스크립트에 포함되어 있는지 여부를 나타내는 값입니다. 예를 들어 통화 기호, 천 단위 구분 기호 및 소수점은 숫자와 인접하거나 숫자 사이에 있을 때 숫자로 분류됩니다. 이 멤버에 대한 가능한 값은 다음 표에 정의되어 있습니다.

의미
TRUE
스크립트에는 유니코드 양방향 알고리즘의 규칙에 따라 숫자를 쓰는 데 사용되는 숫자와 다른 문자만 포함됩니다.
FALSE
스크립트에는 유니코드 양방향 알고리즘의 규칙에 따라 숫자를 쓰는 데 사용되는 숫자와 다른 문자만 포함되지 않습니다.

fComplex

특수 셰이핑 또는 레이아웃이 필요한 언어의 복잡한 스크립트를 나타내는 값입니다. 가능한 값은 다음 표에 정의되어 있습니다.

의미
TRUE
스크립트에는 특수한 셰이핑 또는 레이아웃이 필요합니다.
FALSE
스크립트는 결합 문자를 포함하지 않으며 컨텍스트 셰이핑 또는 순서를 다시 정렬할 필요가 없습니다.

fNeedsWordBreaking

언어의 단어 나누기 배치 유형을 나타내는 값입니다. 가능한 값은 다음 표에 정의되어 있습니다.

의미
TRUE
언어에는 애플리케이션이 ScriptBreak를 호출해야 하는 단어 분리 배치가 있으며, 여기에는 SCRIPT_LOGATTRfWordStop 멤버로 표시된 문자 위치가 포함됩니다.
FALSE
Word 중단 배치는 SCRIPT_LOGATTR fWhiteSpace 멤버로 표시된 문자 또는 SCRIPT_VISATTRuJustification 멤버에 대한 값 SCRIPT_JUSTIFY_BLANK 또는 SCRIPT_JUSTIFY_ARABIC_BLANK 표시된 문자 모양을 검색하여 식별됩니다.

fNeedsCaretInfo

언어(예: 태국어 또는 인도어)가 캐리트 배치를 클러스터 경계로 제한하는지 여부를 나타내는 값입니다. 가능한 값은 다음 표에 정의되어 있습니다. 유효한 캐리트 위치를 확인하기 위해 애플리케이션은 ScriptBreak에서 검색한 논리 특성에서 fCharStop 값을 검사하거나 ScriptShape에서 검색한 pwLogClust 배열의 인접 값을 비교합니다.

참고ScriptXtoCPScriptCPtoX 는 자동으로 caret 배치 제한을 적용합니다.
 
의미
TRUE
언어는 캐리트 배치를 클러스터 경계로 제한합니다.
FALSE
언어는 caret 배치를 클러스터 경계로 제한하지 않습니다.

bCharSet

스크립트와 연결된 명목 문자 집합입니다. 스크립트를 표시하는 데 적합한 글꼴을 만드는 동안 이 문자 집합을 LOGFONTlfCharSet 멤버 값으로 사용할 수 있습니다.

문자 집합이 정의되지 않은 새 스크립트의 경우 애플리케이션은 일반적으로 bCharSet 을 DEFAULT_CHARSET 설정해야 합니다. 멤버 fAmbiguousCharSet에 대한 설명을 참조하세요.

fControl

스크립트에서 컨트롤 문자만 사용되는지 여부를 나타내는 값입니다. 가능한 값은 다음 표에 정의되어 있습니다. 모든 컨트롤 문자는 SCRIPT_CONTROL 구조로 끝나지 않습니다.

의미
TRUE
스크립트에서 컨트롤 문자만 설정합니다.
FALSE
스크립트에서 컨트롤 문자만 설정하지 마세요.

fPrivateUseArea

U+F8FF를 통한 유니코드 범위 U+E000에 대해 비공개로 정의된 특수 문자 집합인 프라이빗 사용 영역의 사용을 나타내는 값입니다. 가능한 값은 다음 표에 정의되어 있습니다.

의미
TRUE
프라이빗 사용 영역을 사용합니다.
FALSE
프라이빗 사용 영역을 사용하지 마세요.

fNeedsCharacterJustify

단어 사이의 공백뿐만 아니라 문자 사이의 모든 공백을 늘려 스크립트에 대한 근거 처리를 나타내는 값입니다. 가능한 값은 다음 표에 정의되어 있습니다. 문자 간 근거를 수행하는 경우 Uniscribe는 SCRIPT_VISATTR uJustification 멤버에 대한 SCRIPT_JUSTIFY_CHARACTER 값으로 표시된 문자 모양 다음에만 추가 공간을 삽입합니다.

의미
TRUE
문자 근거를 사용합니다.
FALSE
문자 근거를 사용하지 마세요.

fInvalidGlyph

ScriptShape가 잘못된 시퀀스를 나타내는 스크립트에 대해 잘못된 문자 모양을 생성하는지 여부를 나타내는 값입니다. 가능한 값은 다음 표에 정의되어 있습니다. 애플리케이션은 ScriptGetFontProperties를 호출하여 특정 글꼴에 대해 잘못된 문자 모양 인덱스의 문자 모양을 가져올 수 있습니다.

의미
TRUE
잘못된 시퀀스를 나타내는 잘못된 문자 모양을 생성합니다.
FALSE
잘못된 시퀀스를 나타내는 잘못된 문자 모양을 생성하지 마세요.

fInvalidLogAttr

ScriptBreak가 논리 특성 버퍼에서 fInvalid를 설정하여 스크립트의 잘못된 조합을 표시하는지 여부를 나타내는 값입니다. 가능한 값은 다음 표에 정의되어 있습니다.

의미
TRUE
스크립트의 잘못된 조합을 표시합니다.
FALSE
스크립트의 잘못된 조합을 표시하지 마세요.

fCDM

스크립트에 Diacritical Marks 결합(U+0300 ~ U+36F)을 포함하여 ScriptItemize 에서 분석한 항목이 포함되어 있는지 여부를 나타내는 값입니다. 가능한 값은 다음 표에 정의되어 있습니다.

의미
TRUE
스크립트에는 각성 표시를 결합하는 항목이 포함되어 있습니다.
FALSE
스크립트에는 각성 표시를 결합하는 항목이 포함되어 있지 않습니다.

fAmbiguousCharSet

스크립트에 둘 이상의 문자 집합에서 지원하는 문자가 포함되어 있는지 여부를 나타내는 값입니다. 가능한 값은 다음 표에 정의되어 있습니다.

의미
TRUE
스크립트에는 둘 이상의 문자 집합에서 지원하는 문자가 포함되어 있습니다. 이 경우 이 구조체의 bCharSet 멤버를 무시해야 하며 LOGFONTlfCharSet 멤버를 DEFAULT_CHARSET 설정해야 합니다. 자세한 내용은 설명 부분을 참조하세요.
FALSE
스크립트에는 둘 이상의 문자 집합에서 지원되는 문자가 포함되어 있지 않습니다.

fClusterSizeVaries

아랍어와 같은 스크립트가 문자를 제거하는 동안 문자열의 크기를 증가시키는 컨텍스트 셰이핑을 사용할 수 있는지 여부를 나타내는 값입니다. 가능한 값은 다음 표에 정의되어 있습니다.

의미
TRUE
컨텍스트 셰이핑에 변수 클러스터 크기를 사용합니다.
FALSE
컨텍스트 셰이핑에 가변 클러스터 크기를 사용하지 마세요.

fRejectInvalid

스크립트(예: 태국어)가 일반적으로 메모장과 같은 편집기 프로그램을 비프음으로 만들고 키 입력을 무시하는 잘못된 시퀀스를 거부해야 하는지 여부를 나타내는 값입니다. 가능한 값은 다음 표에 정의되어 있습니다.

의미
TRUE
잘못된 시퀀스를 거부합니다.
FALSE
잘못된 시퀀스를 거부하지 마세요.

설명

이 구조체는 ScriptGetProperties 함수로 채워집니다.

많은 유니스크립트 스크립트는 8비트 문자 집합에 직접 해당하지 않습니다. 스크립트의 일부 문자가 둘 이상의 문자 집합에서 지원되는 경우 fAmbiguousCharSet 멤버가 설정됩니다. 애플리케이션은 실행에 적합한 글꼴을 요청할 때 사용할 문자 집합을 결정하기 위해 추가 처리를 수행해야 합니다. 예를 들어 실행이 여러 언어로 구성되고 각 언어에 다른 글꼴이 사용되도록 실행을 분할할 수 있습니다.

애플리케이션은 초기화 중에 다음 코드를 사용하여 SCRIPT_PROPERTIES 배열에 대한 포인터를 가져옵니다.

const SCRIPT_PROPERTIES **ppScriptProperties; // Array of pointers  
                                              // to properties 
int iMaxScript;
HRESULT hr;

hr = ScriptGetProperties(&ppScriptProperties, &iMaxScript);

그런 다음 애플리케이션은 다음 예제와 같이 항목 스크립트의 속성을 검사할 수 있습니다.

hr = ScriptItemize(pwcInChars, cInChars, cMaxItems, psControl, psState, pItems, pcItems);
//...
if (ppScriptProperties[pItems[iItem].a.eScript]->fNeedsCaretInfo) 
    {
        // Use ScriptBreak to restrict the caret from entering clusters (for example). 
    }

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
머리글 usp10.h

추가 정보

언어 식별자

SCRIPT_CONTROL

SCRIPT_LOGATTR

SCRIPT_VISATTR

ScriptBreak

ScriptCPtoX

ScriptGetFontProperties

ScriptGetProperties

ScriptItemize

ScriptShape

ScriptXtoCP

Uniscribe

유니스크립스 구조체