텍스트 개체 모델 정보
TOM(텍스트 개체 모델)은 서식 있는 편집 컨트롤을 포함하여 여러 Microsoft 텍스트 솔루션에서 다양한 수준으로 지원되는 일련의 텍스트 조작 인터페이스를 정의합니다. 이 항목에서는 TOM에 대한 상위 수준 개요를 제공합니다. 다음 항목에 대해 설명합니다.
TOM 버전 2 개체
TOM 버전 2(TOM 2)는 원본 텍스트 개체 모델을 확장합니다. 새 인터페이스는 이전 인터페이스에서 파생됩니다. 업데이트된 TOM API에는 새로운 문자 및 단락 형식 속성, 테이블 모델, 다중 선택에 대한 지원과 수학 및 Ruby에 대한 인라인 개체 지원이 포함됩니다.
최상위 TOM 2 개체는 ITextDocument2 인터페이스에 의해 정의되며 개체 계층에서 하위 개체를 만들고 검색하는 메서드가 있습니다. 간단한 일반 텍스트 처리를 위해 ITextDocument2 개체에서 ITextRange2 개체를 가져와 거의 모든 작업을 수행할 수 있습니다. 서식 있는 텍스트 서식을 추가해야 하는 경우 ITextRange2 개체에서 ITextFont2 및 ITextPara2 개체를 가져올 수 있습니다. ITextFont2는 Microsoft Word 형식-글꼴 대화 상자와 동등한 프로그래밍 기능을 제공하고 ITextPara2는 Word 형식-단락 대화 상자와 동등하게 제공합니다.
이 세 가지 하위 수준 개체 외에도 TOM 2에는 선택 강조 표시 및 일부 UI 지향 메서드가 있는 ITextRange2 개체인 선택 개체(ITextSelection2)가 있습니다.
범위 및 선택 개체에는 프로그램이 화면의 텍스트 또는 화면에서 스크롤할 수 있는 텍스트를 검사할 수 있도록 하는 화면 지향 메서드가 포함됩니다. 이러한 기능은 예를 들어, 시각 장애가 있는 사람이 텍스트에 액세스할 수 있도록 도와줍니다.
접미사 2가 있는 각 인터페이스는 접미사 2가 없는 해당 인터페이스에서 상속됩니다. 예를 들어, ITextDocument2는 ITextDocument에서 상속합니다.
TOM 2 개체에는 다음과 같은 계층 구조가 있습니다.
ITextDocument2 Top-level editing object
ITextRange2 Primary text interface: a range of text
ITextFont2 Character-attribute interface
ITextPara2 Paragraph-attribute interface
ITextRow Table interface
ITextSelection2 Screen highlighted text range
ITextRange2 Selection inherits all range methods
ITextDisplays Displays collection (not yet defined)
ITextStrings Rich-text strings collection
ITextStoryRanges2 Enumerator for stories in document
ITextDocument2 개체는 스토리라고 하는 하나 이상의 연속 텍스트 범위를 설명합니다. 스토리는 문서의 기본 텍스트, 머리글 및 바닥글, 각주, 주석 및 서식 있는 텍스트 스크래치 패드와 같은 문서의 다양한 파트를 나타냅니다. 스크래치 패드 스토리는 선형 형식의 수학 식과 빌드업 형식 사이를 변환할 때 사용됩니다. 콘텐츠가 변경되려고 할 때 현재 복사 원본인 범위의 콘텐츠를 저장할 때도 스크래치 패드 스토리가 사용됩니다.
ITextRange2 개체는 시작 및 끝 문자 위치 오프셋과 스토리 개체로 정의됩니다. 텍스트를 클립보드나 다른 대상에 복사할 수 있지만 부모 스토리 개체와 독립적으로 존재하지 않습니다. 텍스트 범위 개체는 다른 종류의 오프셋으로 정의되는 스프레드시트 및 기타 범위 개체와 다릅니다(예: 행/열 또는 그래픽 위치(x, y)). 텍스트 범위 개체는 다양한 방법으로 자체 수정하고 자체 복제본을 반환할 수 있으며 시작 및 끝 문자 위치와 현재 선택 항목에 대한 스토리 포인터를 복사하도록 명령할 수 있습니다.
특정 스토리를 나타내기 위해 항상 ITextRange 개체를 만들 수 있으므로 명시적인 스토리 개체가 필요하지 않습니다. 특히 ITextDocument 개체는 ITextStoryRanges 개체를 만들어 완전한 스토리를 설명하는 시작 및 끝 문자 위치 값이 있는 범위(예: 0 및 tomForward)에 관한 문서의 스토리를 열거할 수 있습니다.
ITextStoryRanges2 개체를 사용하면 각 스토리가 ITextRange2 개체로 설명되기 때문에 명시적인 스토리 개체가 필요하지 않습니다. 특히 ITextDocument2 개체는 ITextStoryRanges2 개체를 만들어 완전한 스토리를 설명하는 시작 및 끝 문자 위치 값이 있는 범위(예: 0 및 tomForward)에 관한 문서의 스토리를 열거할 수 있습니다.
ITextRange::Move 및 ITextRange::Expand 메서드와 함께 ITextRow 인터페이스를 사용하면 테이블 삽입, 쿼리 및 변경 기능을 활용할 수 있습니다.
TOM 인터페이스 규칙
모든 TOM 메서드는 HRESULT 값을 반환합니다. 일반적으로 TOM 메서드는 다음과 같은 표준 값을 반환합니다.
- E_OUTOFMEMORY
- E_INVALIDARG
- E_NOTIMPL
- E_FILENOTFUND
- E_ACCESSDENIED
- E_FAIL
- CO_E_RELEASED
- NOERROR(S_OK와 동일)
- S_FALSE
ITextRange와 같은 TOM 개체와 연결된 편집 인스턴스가 삭제되면 TOM 개체가 쓸모없게 되고 모든 해당 메서드가 CO_E_RELEASED를 반환합니다.
HRESULT 반환 값 외에도 많은 메서드에는 값을 반환하는 데 사용되는 포인터인 out 매개 변수가 포함되어 있습니다. 모든 인터페이스에 대해 사용하기 전에 모든 포인터 매개 변수가 0이 아닌지 확인해야 합니다. 유효한 포인터가 필요한 메서드에 null 값을 전달하면 해당 메서드는 E_INVALIDARG를 반환합니다. null 값이 있는 선택적 아웃 포인터는 무시됩니다.
Get 및 Set 접두사가 있는 메서드를 사용하여 속성을 가져오고 설정합니다. 부울 변수는 FALSE에 tomFalse(0)를 사용하고 TRUE에 tomTrue(-1)를 사용합니다.
TOM 상수는 tomConstants 열거형 형식에서 정의되며 접두사 tom으로 시작합니다(예: tomWord).
tomBool 형식
많은 TOM 메서드는 이진 상태가 있는 서식 있는 텍스트 특성에 대해 "tomBool"이라는 특수 형식의 변수를 사용합니다. tomBool 형식은 4개의 값(tomTrue, tomFalse, tomToggle 및 tomUndefined)을 가질 수 있기 때문에 Boolean 형식과 다릅니다. tomTrue 및 tomFalse 값은 true과 false를 나타냅니다. tomToggle 값은 속성을 전환하는 데 사용됩니다. 전통적으로 NINCH라고 하는 tomUndefined 값은 long, float 및 COLORREF와 함께 작동하는 특별한 입력 없음, 변경 없음 값입니다. 문자열의 경우 tomUndefined(또는 NINCH)는 null 문자열로 표시됩니다. 속성 집합 설정 작업의 경우 tomUndefined를 사용해도 대상 속성 집합이 변경되지 않습니다. 속성 가져오기 작업의 경우 tomUndefined는 범위의 문자가 다른 값을 가짐을 의미합니다(속성 대화 상자에 회색 확인란이 표시됨).
수학 빌드업 및 빌드다운
ITextRange2::BuildUpMath 메서드를 사용하여 선형 형식의 수학 식을 빌드업 버전으로 변환할 수 있습니다. ITextRange2::Linearize 메서드는 선형화 또는 빌드다운이라고 하는 반대 변환을 수행하여 빌드업 버전의 수학 식을 다시 선형 형식으로 변환합니다. 수학 빌드다운 기능은 일반 텍스트를 내보내거나 특정 형식의 편집을 사용하도록 설정해야 할 때 유용합니다.
TOM RTF
TOM에서 서식 있는 텍스트 교환은 명시적 메서드 호출 집합이나 RTF(서식 있는 텍스트 형식)로 서식 있는 텍스트를 전송하여 수행할 수 있습니다. 이 섹션에서는 단락 속성 및 문자 속성에 대한 RTF 컨트롤 단어 표를 제공합니다.
TOM RTF 단락 컨트롤 단어
컨트롤 단어 | 의미 |
---|---|
\ fi n | 첫 줄 들여쓰기(기본값은 0). |
\ keep | 단락을 그대로 유지합니다. |
\ keepn | 다음 단락에서 계속합니다. |
\ li n | 왼쪽 들여쓰기(기본값은 0). |
\ noline | 줄 번호가 없습니다. |
\ nowidctlpar | 과부/분리 컨트롤을 끕니다. |
\ pagebb | 단락 앞에서 페이지를 나눕니다. |
\ par | 새 단락. |
\ pard | 기본 단락 속성으로 초기화합니다. |
\ ql | 왼쪽 정렬(기본값). |
\ qr | 오른쪽 맞춤. |
\ qj | 양쪽에 맞춥니다. |
\ qc | 가운데에 맞춥니다. |
\ ri n | 오른쪽 들여쓰기(기본값은 0). |
\ s n | 스타일 n. |
\ sa n | 뒤에 공백을 둡니다(기본값은 0). |
\ sb n | 앞에 공백을 둡니다(기본값은 0). |
\ sl n | 누락되었거나 n=1000인 경우 줄 간격은 줄에서 가장 긴 문자(한 줄 간격)로 결정됩니다. n>이 0이면 최소한 이 크기가 사용됩니다. n이 < 0이면 정확히 |n|이 사용됩니다. 줄 간격은 \ slmult 1 다음에 오는 경우 여러 줄 간격입니다. |
\ slmult m | \ sl을 따릅니다. m = 0: 최소 또는 정확히 \ sl n에 설명된 줄 간격. m = 1: 줄 간격 = 한 줄 간격의 n/240배. |
\ tb n | 왼쪽 여백에서 막대 탭 위치(트윕). |
\ tldot | 탭 지시선 점. |
\ tleq | 탭 리더 등호. |
\ tlhyph | 탭 지시선 하이픈. |
\ tlth | 탭 리더 굵은 선. |
\ tlul | 탭 지시선에 밑줄을 긋습니다. |
\ tqc | 중앙 탭. |
\ tqdec | 십진법 탭. |
\ tqr | 플러시 오른쪽 탭. |
\ tx n | 왼쪽 여백에서 탭 위치(트윕). |
TOM RTF 문자 형식 컨트롤 단어
컨트롤 단어 | 의미 |
---|---|
\ animation n | 애니메이션 형식을 n으로 설정합니다. |
\ b | 굵게 |
\ caps | 모든 대문자. |
\ cf n | 전경색(기본값은 tomAutocolor)입니다. |
\ cs n | 문자 스타일 n. |
\ dn n | 반점 단위의 첨자 위치(기본값은 6). |
\ embo | 볼록입니다. |
\ f n | 글꼴 번호 n은 글꼴 테이블의 항목을 나타냅니다. |
\ fs n | 0.5포인트 단위의 글꼴 크기(기본값은 24). |
\ highlight n | 배경색(기본값은 tomAutocolor)입니다. |
\ i | 기울임꼴. |
\ impr | 임프린트. |
\ lang n | 문자에 언어를 적용합니다. n은 언어에 해당하는 숫자입니다. \ 일반 컨트롤 단어는 언어 속성을 문서 속성에서 \ deflang n에 의해 정의된 언어로 초기화합니다. |
\ nosupersub | 위 첨자 또는 아래 첨자를 끕니다. |
\ outl | 윤곽선. |
\ plain | 문자 서식 속성을 애플리케이션에서 정의한 기본값으로 초기화합니다. 연결된 문자 서식 속성(RTF 사양의 연결된 문자 속성 섹션에 설명됨)도 초기화됩니다. |
\ scaps | 작은 대문자. |
\ shad | 섀도. |
\ strike | 취소선. |
\ sub | 텍스트에 첨자를 적용하고 글꼴 정보에 따라 포인트 크기를 줄입니다. |
\ super | 텍스트에 위 첨자를 적용하고 글꼴 정보에 따라 포인트 크기를 줄입니다. |
\ ul | 연속 밑줄. \ ul0 turns off all underlining. |
\ uld | 점선 밑줄. |
\ uldb | 이중 밑줄. |
\ ulnone | 모든 밑줄을 중지합니다. |
\ ulw | 단어 밑줄. |
\ up n | 반점의 위 첨자 위치(기본값은 6). |
\ v | 숨겨진 텍스트. |
서식 있는 텍스트 찾기
TOM 방법을 사용하여 텍스트 범위로 정의된 서식 있는 텍스트를 찾을 수 있습니다. WYSIWYG(what you see is what you get) 워드 프로세서에서는 결코 충족되지 않았지만 이러한 서식 있는 텍스트를 정확히 찾는 것은 워드 프로세싱에서 자주 필요합니다. 일부 문자 서식 속성을 무시할 수 있는(또는 단락 서식 및/또는 개체 콘텐츠 포함) 서식 있는 텍스트 일치의 더 큰 도메인이 분명히 있지만 이러한 일반화는 이 섹션의 범위를 벗어납니다.
이 기능의 한 가지 목적은 서식 있는 텍스트 찾기 대화 상자를 사용하여 문서에서 찾으려는 서식 있는 텍스트를 정의하는 것입니다. 서식 있는 편집 컨트롤을 사용하여 대화 상자를 구현하고, TOM 메서드를 사용하여 문서 검색을 수행합니다. 문서에서 원하는 서식 있는 텍스트를 찾기 대화 상자로 복사하거나 찾기 대화 상자에서 직접 입력하고 서식을 지정할 수 있습니다.
다음 예에서는 TOM 방법을 사용하여 정확한 문자 서식 조합이 포함된 텍스트를 찾는 방법을 보여 줍니다. 알고리즘이 pr1
이라는 일치 범위에서 일반 텍스트를 검색합니다. 일반 텍스트가 발견되면 pr2
라는 시도 범위로 지정됩니다. 그런 다음 두 개의 삽입 지점 범위(prip1
및 prip2
)를 사용하여 해당 문자 서식을 pr1
의 형식과 비교하는 시도 범위를 살펴봅니다. 정확히 일치하면 입력 범위(ppr
로 제공)가 시도 범위의 텍스트를 가리키도록 업데이트되고 함수는 일치하는 범위의 문자 수를 반환합니다. 두 개의 ITextFont 개체인 pf1
및 pf2
가 문자 서식 비교에 사용됩니다. 삽입 지점 범위 prip1
및 prip2
에 연결됩니다.
LONG FindRichText (
ITextRange **ppr, // Ptr to range to search
ITextRange *pr1) // Range with rich text to find
{
BSTR bstr; // pr1 plain-text to search for
LONG cch; // Text string count
LONG cch1, cch2; // tomCharFormat run char counts
LONG cchMatch = 0; // Nothing matched yet
LONG cp; // Handy char position
LONG cpFirst1; // pr1 cpFirst
LONG cpFirst2; // pr2 cpFirst
ITextFont * pf1, *pf // Fonts corresponding to IPs prip1 and prip2
ITextRange *pr2; // Range duplicate to search with
ITextRange *prip1, *prip // Insertion points to walk pr1, pr2
if (!ppr || !*ppr || !pr1)
return E_INVALIDARG;
// Initialize range and font objects used in search
if ((*ppr)->GetDuplicate(&pr2) != NOERROR ||
pr1->GetDuplicate(&prip1) != NOERROR ||
pr2->GetDuplicate(&prip2) != NOERROR ||
prip1->GetFont(&pf1) != NOERROR ||
prip2->GetFont(&pf2) != NOERROR ||
pr1->GetText(&bstr) != NOERROR )
{
return E_OUTOFMEMORY;
}
pr1->GetStart(&cpFirst1);
// Keep searching till rich text is matched or no more plain-text hits
while(!cchMatch && pr2->FindText(bstr, tomForward, 0, &cch) == NOERROR)
{
pr2->GetStart(&cpFirst2); // pr2 is a new trial range
prip1->SetRange(cpFirst1, cpFirst1); // Set up IPs to scan match
prip2->SetRange(cpFirst2, cpFirst2); // and trial ranges
while(cch > 0 &&
pf1->IsEqual(pf2, NULL) == NOERROR) // Walk match & trial ranges
{ // together comparing font
prip1->GetStart(&cch1); // properties
prip1->Move(tomCharFormat, 1, NULL);
prip1->GetStart(&cp);
cch1 = cp - cch1; // cch of next match font run
prip2->GetStart(&cch2);
prip2->Move(tomCharFormat, 1, NULL);
prip2->GetStart(&cp);
cch2 = cp - cch2; // cch of next trial font run
if(cch1 < cch) // There is more to compare
{
if(cch1 != cch2) // Different run lengths:
break; // no formatting match
cch = cch - cch1; // Matched format run
}
else if(cch2 < cch) // Trial range format run too
break; // short
else // Both match and trial runs
{ // reach at least to match
pr2->GetEnd(&cp); // text end: rich-text match
(*ppr)->SetRange(cpFirst2, cp) // Set input range to hit
cchMatch = cp - cpFirst2; // coordinates and return
break; // length of matched string
}
}
}
pr2->Release();
prip1->Release();
prip2->Release();
pf1->Release();
pf2->Release();
SysFreeString(bstr);
return cchMatch;
}
TOM 접근성
TOM은 ITextSelection 및 ITextRange 인터페이스를 통해 접근성 지원을 제공합니다. 이 섹션에서는 접근성에 유용한 메서드와 프로그램이 개체의 x, y 화면 위치를 결정하는 방법에 대해 설명합니다.
UI 기반 접근성 프로그램은 일반적으로 화면과 마우스로 작동하므로 일반적인 관심사는 현재 마우스 위치(화면 좌표에서)에 해당하는 ITextDocument 인터페이스를 찾는 것입니다. 다음 섹션에서는 적절한 인터페이스를 결정하는 두 가지 방법을 제시합니다.
- 실행 개체 테이블을 통해
- EM_GETOLEINTERFACE 메시지를 통해, 클라이언트가 동일한 프로세스 공간에 있는 경우 창 모드 서식 있는 편집 인스턴스에 대해 작동합니다(마샬링이 필요하지 않음).
자세한 내용은 Microsoft Active Accessibility 사양을 참조하세요. 화면 위치에서 개체를 가져온 후 ITextDocument 인터페이스에 사용하고 RangeFromPoint 메서드를 호출하여 화면 위치에 해당하는 cp에서 빈 범위 개체를 가져올 수 있습니다.
실행 개체 테이블의 인터페이스
ROT(실행 개체 테이블)는 어떤 개체 인스턴스가 활성 상태인지 알려 줍니다. 이 테이블을 쿼리하면 개체가 이미 실행 중일 때 클라이언트를 개체에 연결하는 프로세스를 가속화할 수 있습니다. 프로그램이 실행 개체 테이블을 통해 TOM 인터페이스에 액세스하려면 창이 있는 TOM 인스턴스가 모니커를 사용하여 ROT에 등록해야 합니다. HWND의 16진수 값을 포함하는 문자열에서 모니커를 구성합니다. 다음 코드 샘플은 이를 수행하는 방법을 보여 줍니다.
// This TOM implementation code is executed when a new windowed
// instance starts up.
// Variables with leading underscores are members of this class.
HRESULT hr;
OLECHAR szBuf[10]; // Place to put moniker
MONIKER *pmk;
hr = StringCchPrintf(szBuff, 10, "%x", _hwnd);
if (FAILED(hr))
{
//
// TODO: write error handler
//
}
CreateFileMoniker(szBuf, &pmk);
OleStdRegisterAsRunning(this, pmk, &_dwROTcookie);
....................
// Accessibility Client:
// Find hwnd for window pointed to by mouse cursor.
GetCursorPos(&pt);
hwnd = WindowFromPoint(pt);
// Look in ROT (running object table) for an object attached to hwnd
hr = StringCchPrintf(szBuff, 10, "%x", hwnd);
if (FAILED(hr))
{
//
// TODO: write error handler
//
}
CreateFileMoniker(szBuf, &pmk);
CreateBindContext(0, &pbc);
pmk->BindToObject(pbc, NULL, IID_ITextDocument, &pDoc);
pbc->Release();
if( pDoc )
{
pDoc->RangeFromPoint(pt.x, pt.y, &pRange);
// ...now do whatever with the range pRange
}
창 메시지의 인터페이스
EM_GETOLEINTERFACE 메시지는 지정된 화면 위치에서 개체에 대한 IUnknown 인터페이스를 가져오는 다른 방법을 제공합니다. 실행 개체 테이블의 인터페이스에 설명된 대로 화면 위치에 대한 HWND를 가져온 다음 이 메시지를 해당 HWND로 보냅니다. EM_GETOLEINTERFACE 메시지는 서식 있는 편집에 따라 다르며 lParam에 의해 지정된 변수의 IRichEditOle 인터페이스에 대한 포인터를 반환합니다.
팁 포인터가 반환되면(메시지를 보내기 전에 lParam이 가리키는 개체를 null로 설정해야 함) IUnknown::QueryInterface 메서드를 호출하여 ITextDocument 인터페이스를 가져올 수 있습니다. 다음 코드 샘플에서 이 접근 방법을 보여 줍니다.
HWND hwnd;
ITextDocument *pDoc;
ITextRange *pRange;
POINT pt;
IUnknown *pUnk = NULL;
GetCursorPos(&pt);
hwnd = WindowFromPoint(pt);
SendMessage(hwnd, EM_GETOLEINTERFACE, 0, (LPARAM)&pUnk);
if(pUnk &&
pUnk->QueryInterface(IID_ITextDocument, &pDoc) == NOERROR)
{
pDoc->RangeFromPoint(pt.x, pt.y, &pRange);
// ... continue with rest of program
}
접근성 지향 방법
일부 TOM 방법은 화면을 탐색하는 데 특히 유용하지만 다른 TOM 방법은 관심 장소에 도착했을 때 할 수 있는 작업을 향상시킵니다. 다음 표는 가장 유용한 방법을 설명합니다.
메서드 | 접근성을 높이는 방법 |
---|---|
GetSelection | 이 메서드는 텍스트 강조 표시 및 스크롤과 같은 다양한 보기 지향 목적에 사용할 수 있는 활성 선택을 가져옵니다. |
RangeFromPoint | 활성 선택에 사용되는 경우 이 메서드는 특정 보기와 연결된 범위를 가져오는 것이 보장됩니다. |
Expand | 포함된 파트 단위가 완전히 포함되도록 텍스트 범위를 확대합니다. 예를 들어, Expand(tomWindow) 은 범위 스토리의 보이는 부분을 포함하도록 범위를 확장합니다. |
GetDuplicate | 활성 선택에 사용되는 경우 이 메서드는 특정 보기와 연결된 범위를 가져오는 것이 보장됩니다. RangeFromPoint에 대한 설명을 참조하세요. |
GetPoint | 텍스트 범위에서 시작 또는 끝 문자 위치에 대한 화면 좌표를 가져옵니다. |
ScrollIntoView | 텍스트 범위를 보기로 스크롤합니다. |
SetPoint | 지정된 지점 또는 그 위의 텍스트를 선택합니다. |
문자 일치 집합
MoveWhile 및 MoveUntil과 같은 ITextRange에 있는 다양한 Move* 메서드의 variant 매개 변수는 명시적 문자열 또는 문자 일치 집합 32비트 인덱스를 사용할 수 있습니다. 인덱스는 유니코드 범위 또는 GetStringTypeEx 문자 집합으로 정의됩니다. n에서 시작하고 길이가 l(< 32768)인 유니코드 범위는 인덱스 n +(l << 16) + 0x80000000로 지정됩니다. 예를 들어, 기본 그리스 문자는 CR_Greek = 0x805f0370으로 정의되고 인쇄 가능한 ASCII 문자는 CR_ASCIIPrint = 0x805e0020으로 정의됩니다. 또한 MoveWhile 및 MoveUntil 메서드를 사용하면 모든 GetStringTypeEx 문자 집합의 문자 범위 또는 이러한 문자 집합 중 하나에 속하지 않는 문자 범위를 빠르게 무시할 수 있습니다.
GetStringTypeEx 집합은 Ctype1, Ctype2 및 Ctype3의 값으로 지정되며 다음과 같이 정의됩니다. 다음과 같습니다.
Cset | 의미 |
---|---|
Ctype1 | CT_CTYPE1 형식의 조합. |
Ctype2 + tomCType2 | 모든 CT_CTYPE2 형식. |
Ctype3 + tomCType3 | CT_CTYPE3 형식의 조합. |
특히 Ctype1은 다음의 조합일 수 있습니다.
Ctype1 이름 | 값 | 의미 |
---|---|---|
C1_UPPER | 0x0001 | 대문자. |
C1_LOWER | 0x0002 | 소문자. |
C1_DIGIT | 0x0004 | 10진수. |
C1_SPACE | 0x0008 | 공백 문자. |
C1_PUNCT | 0x0010 | 문장 부호 |
C1_CNTRL | 0x0020 | 컨트롤 문자. |
C1_BLANK | 0x0040 | 빈 문자. |
C1_XDIGIT | 0x0080 | 16진수. |
C1_ALPHA | 0x0100 | 모든 언어 문자(알파벳, 음절 또는 표의 문자). |
C1_DEFINED | 0x0200 | 정의된 문자이지만 다른 C1_* 형식 중 하나는 아닙니다. |
Ctype2 형식은 유니코드 텍스트의 적절한 레이아웃을 지원합니다. 방향 특성은 유니코드로 표준화된 양방향 레이아웃 알고리즘이 정확한 결과를 생성하도록 할당됩니다. 이러한 형식은 상호 배타적입니다. 이러한 특성 사용에 대한 자세한 내용은 The Unicode Standard: Worldwide Character Encoding, Volumes 1 and 2, Addison-Wesley Publishing Company: 1991, 1992를 참조하세요.
CType2 이름 | 값 | 의미 |
---|---|---|
강함: | ||
C2_LEFTTORIGHT | 0x1 | 왼쪽에서 오른쪽 순서입니다. |
C2_RIGHTTOLEFT | 0x2 | 오른쪽에서 왼쪽 |
약함: | ||
C2_EUROPENUMBER | 0x3 | 유럽 숫자, 유럽 숫자. |
C2_EUROPESEPARATOR | 0x4 | 유럽식 숫자 구분 기호. |
C2_EUROPETERMINATOR | 0x5 | 유럽 숫자 종결자. |
C2_ARABICNUMBER | 0x6 | 아랍어 숫자. |
C2_COMMONSEPARATOR | 0x7 | 일반적인 숫자 구분 기호입니다. |
중립적: | ||
C2_BLOCKSEPARATOR | 0x8 | 블록 구분 기호. |
C2_SEGMENTSEPARATOR | 0x9 | 세그먼트 구분 기호. |
C2_WHITESPACE | 0xA | 공백. |
C2_OTHERNEUTRAL | 0xB | 기타 중립. |
해당 없음: | ||
C2_NOTAPPLICABLE | 0x0 | 암시적인 방향이 없습니다. |
Ctype3 형식은 일반 텍스트 처리 또는 표준 C 라이브러리 함수에 필요한 POSIX 형식에 대한 확장을 위한 자리 표시자로 사용됩니다.
CType3 이름 | 값 | 의미 |
---|---|---|
C3_NONSPACING | 0x1 | 공백 없음 표시. |
C3_DIACRITIC | 0x2 | 분음 부호 공백 없음 표시. |
C3_VOWELMARK | 0x4 | 모음 공백 없음 표시. |
C3_SYMBOL | 0x8 | 기호. |
C3_KATAKANA | 0x10 | 가타카나 문자. |
C3_HIRAGANA | 0x20 | 히라가나 문자. |
C3_HALFWIDTH | 0x40 | 반자 문자(half-width character). |
C3_FULLWIDTH | 0x80 | 전자 문자(full-width character). |
C3_IDEOGRAPH | 0x100 | 표의 문자(ideographic character). |
C3_KASHIDA | 0x200 | 아랍어 Kashida 문자. |
C3_ALPHA | 0x8000 | 모든 언어 문자(알파벳, 음절 및 표의 문자). |
C3_NOTAPPLICABLE | 0x0 | 해당 사항 없음 |
EDK(Edit Development Kit)에는 유니코드 표준에 설명된 다음 범위에 대한 pVar 인덱스 정의가 포함될 수 있습니다.
문자 집합 | 유니코드 범위 | 문자 집합 | 유니코드 범위 |
---|---|---|---|
ASCII | 0x0—0x7f | ANSI | 0x0—0xff |
ASCIIPrint | 0x20—0x7e | Latin1 | 0x20—0xff |
Latin1Supp | 0xa0—0xff | LatinXA | 0x100—0x17f |
LatinXB | 0x180—0x24f | IPAX | 0x250—0x2af |
SpaceMod | 0x2b0—0x2ff | 결합 | 0x300—0x36f |
그리스어 | 0x370—0x3ff | BasicGreek | 0x370—0x3cf |
GreekSymbols | 0x3d0—0x3ff | 키릴 자모 | 0x400—0x4ff |
아르메니아어 | 0x530—0x58f | 히브리어 | 0x590—0x5ff |
BasicHebrew | 0x5d0—0x5ea | HebrewXA | 0x590—0x5cf |
HebrewXB | 0x5eb—0x5ff | 아랍어 | 0x600—0x6ff |
BasicArabic | 0x600—0x652 | ArabicX | 0x653—0x6ff |
Devangari | 0x900—0x97f | Bangla(이전의 Bengali) | 0x980—0x9ff |
굴묵키어 | 0xa00—0xa7f | 구자라트어 | 0xa80—0xaff |
Odia(이전의 Oriya) | 0xb00—0xb7f | 타밀어 | 0xb80—0xbff |
Teluga | 0xc00—0xc7f | 칸나다어 | 0xc80—0xcff |
말라얄람어 | 0xd00—0xd7f | 태국어 | 0xe00—0xe7f |
라오어 | 0xe80—0xeff | GeorgianX | 0x10a0—0xa0cf |
BascGeorgian | 0x10d0—0x10ff | Jamo | 0x1100—0x11ff |
LatinXAdd | 0x1e00—0x1eff | GreekX | 0x1f00—0x1fff |
GenPunct | 0x2000—0x206f | 위 첨자 | 0x2070—0x207f |
아래 첨자 | 0x2080—0x208f | SuperSubscript | 0x2070—0x209f |
통화 | 0x20a0—0x20cf | CombMarkSym | 0x20d0—0x20ff |
LetterLike | 0x2100—0x214f | NumberForms | 0x2150—0x218f |
화살표 | 0x2190—0x21ff | MathOps | 0x2200—0x22ff |
MiscTech | 0x2300—0x23ff | CtrlPictures | 0x2400—0x243f |
OptCharRecog | 0x2440—0x245f | EnclAlphaNum | 0x2460—x24ff |
BoxDrawing | 0x2500—0x257f | BlockElement | 0x2580—0x259f |
GeometShapes | 0x25a0—0x25ff | MiscSymbols | 0x2600—0x26ff |
Dingbats | 0x2700—0x27bf | CJKSymPunct | 0x3000—0x303f |
히라가나 | 0x3040—0x309f | 가타카나 | 0x30a0—0x30ff |
Bopomofo | 0x3100—0x312f | HangulJamo | 0x3130—0x318f |
CJLMisc | 0x3190—0x319f | EnclCJK | 0x3200—0x32ff |
CJKCompatibl | 0x3300—0x33ff | Han | 0x3400—0xabff |
한글 | 0xac00—0xd7ff | UTF16Lead | 0xd800—0xdbff |
UTF16Trail | 0xdc00—0xdfff | PrivateUse | 0xe000—0xf800 |
CJKCompIdeog | 0xf900—0xfaff | AlphaPres | 0xfb00—0xfb4f |
ArabicPresA | 0xfb50—0xfdff | CombHalfMark | 0xfe20—0xfe2f |
CJKCompForm | 0xfe30—0xfe4f | SmallFormVar | 0xfe50—0xfe6f |
ArabicPresB | 0xfe70—0xfefe | HalfFullForm | 0xff00—0xffef |
특수 문자 | 0xfff0—0xfffd |