다음을 통해 공유


텍스트 개체 모델 정보

TOM(텍스트 개체 모델)은 서식 있는 편집 컨트롤을 포함하여 여러 Microsoft 텍스트 솔루션에서 다양한 수준으로 지원되는 일련의 텍스트 조작 인터페이스를 정의합니다. 이 항목에서는 TOM에 대한 상위 수준 개요를 제공합니다. 다음 항목에 대해 설명합니다.

TOM 버전 2 개체

TOM 버전 2(TOM 2)는 원본 텍스트 개체 모델을 확장합니다. 새 인터페이스는 이전 인터페이스에서 파생됩니다. 업데이트된 TOM API에는 새로운 문자 및 단락 형식 속성, 테이블 모델, 다중 선택에 대한 지원과 수학 및 Ruby에 대한 인라인 개체 지원이 포함됩니다.

최상위 TOM 2 개체는 ITextDocument2 인터페이스에 의해 정의되며 개체 계층에서 하위 개체를 만들고 검색하는 메서드가 있습니다. 간단한 일반 텍스트 처리를 위해 ITextDocument2 개체에서 ITextRange2 개체를 가져와 거의 모든 작업을 수행할 수 있습니다. 서식 있는 텍스트 서식을 추가해야 하는 경우 ITextRange2 개체에서 ITextFont2ITextPara2 개체를 가져올 수 있습니다. ITextFont2는 Microsoft Word 형식-글꼴 대화 상자와 동등한 프로그래밍 기능을 제공하고 ITextPara2는 Word 형식-단락 대화 상자와 동등하게 제공합니다.

이 세 가지 하위 수준 개체 외에도 TOM 2에는 선택 강조 표시 및 일부 UI 지향 메서드가 있는 ITextRange2 개체인 선택 개체(ITextSelection2)가 있습니다.

범위 및 선택 개체에는 프로그램이 화면의 텍스트 또는 화면에서 스크롤할 수 있는 텍스트를 검사할 수 있도록 하는 화면 지향 메서드가 포함됩니다. 이러한 기능은 예를 들어, 시각 장애가 있는 사람이 텍스트에 액세스할 수 있도록 도와줍니다.

접미사 2가 있는 각 인터페이스는 접미사 2가 없는 해당 인터페이스에서 상속됩니다. 예를 들어, ITextDocument2ITextDocument에서 상속합니다.

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::MoveITextRange::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 접두사가 있는 메서드를 사용하여 속성을 가져오고 설정합니다. 부울 변수는 FALSEtomFalse(0)를 사용하고 TRUEtomTrue(-1)를 사용합니다.

TOM 상수는 tomConstants 열거형 형식에서 정의되며 접두사 tom으로 시작합니다(예: tomWord).

tomBool 형식

많은 TOM 메서드는 이진 상태가 있는 서식 있는 텍스트 특성에 대해 "tomBool"이라는 특수 형식의 변수를 사용합니다. tomBool 형식은 4개의 값(tomTrue, tomFalse, tomToggletomUndefined)을 가질 수 있기 때문에 Boolean 형식과 다릅니다. tomTruetomFalse 값은 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라는 시도 범위로 지정됩니다. 그런 다음 두 개의 삽입 지점 범위(prip1prip2)를 사용하여 해당 문자 서식을 pr1의 형식과 비교하는 시도 범위를 살펴봅니다. 정확히 일치하면 입력 범위(ppr로 제공)가 시도 범위의 텍스트를 가리키도록 업데이트되고 함수는 일치하는 범위의 문자 수를 반환합니다. 두 개의 ITextFont 개체인 pf1pf2가 문자 서식 비교에 사용됩니다. 삽입 지점 범위 prip1prip2에 연결됩니다.

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은 ITextSelectionITextRange 인터페이스를 통해 접근성 지원을 제공합니다. 이 섹션에서는 접근성에 유용한 메서드와 프로그램이 개체의 x, y 화면 위치를 결정하는 방법에 대해 설명합니다.

UI 기반 접근성 프로그램은 일반적으로 화면과 마우스로 작동하므로 일반적인 관심사는 현재 마우스 위치(화면 좌표에서)에 해당하는 ITextDocument 인터페이스를 찾는 것입니다. 다음 섹션에서는 적절한 인터페이스를 결정하는 두 가지 방법을 제시합니다.

자세한 내용은 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 지정된 지점 또는 그 위의 텍스트를 선택합니다.

 

문자 일치 집합

MoveWhileMoveUntil과 같은 ITextRange에 있는 다양한 Move* 메서드의 variant 매개 변수는 명시적 문자열 또는 문자 일치 집합 32비트 인덱스를 사용할 수 있습니다. 인덱스는 유니코드 범위 또는 GetStringTypeEx 문자 집합으로 정의됩니다. n에서 시작하고 길이가 l(< 32768)인 유니코드 범위는 인덱스 n +(l << 16) + 0x80000000로 지정됩니다. 예를 들어, 기본 그리스 문자는 CR_Greek = 0x805f0370으로 정의되고 인쇄 가능한 ASCII 문자는 CR_ASCIIPrint = 0x805e0020으로 정의됩니다. 또한 MoveWhileMoveUntil 메서드를 사용하면 모든 GetStringTypeEx 문자 집합의 문자 범위 또는 이러한 문자 집합 중 하나에 속하지 않는 문자 범위를 빠르게 무시할 수 있습니다.

GetStringTypeEx 집합은 Ctype1, Ctype2Ctype3의 값으로 지정되며 다음과 같이 정의됩니다. 다음과 같습니다.

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