O objektovém modelu textu

Textový objektový model (TOM) definuje sadu rozhraní pro manipulaci s textem, která jsou podporována v různých stupních několika textových řešení Microsoftu, včetně ovládacího prvku pro úpravy s formátováním. Toto téma obsahuje základní přehled TOM. Popisuje následující témata.

Objekty TOM verze 2

TOM verze 2 (TOM 2) rozšiřuje původní textový objektový model; nová rozhraní jsou odvozena od starých rozhraní. Aktualizované rozhraní TOM API zahrnuje podporu pro nové vlastnosti formátování znaků a odstavců, model tabulky, vícenásobný výběr a podporu vložených objektů pro matematiku a ruby.

Top-level objekt TOM 2 je definován rozhraním ITextDocument2, které má metody pro vytváření a načítání objektů nižší úrovně v hierarchii objektů. Pro jednoduché zpracování prostého textu můžete získat objekt ITextRange2 z objektu ITextDocument2 a provádět s ním většinu úkonů. Pokud potřebujete přidat formátování s bohatým textem, můžete získat ITextFont2 a ITextPara2 objekty z ITextRange2 objektu. ITextFont2 poskytuje programovací ekvivalent dialogového okna pro formátování písma aplikace Microsoft Word a ITextPara2 poskytuje ekvivalent dialogového okna pro formátování odstavců v Microsoft Word.

Kromě těchto tří objektů nižší úrovně má TOM 2 objekt výběru (ITextSelection2), což je ITextRange2 objekt se zvýrazněním výběru a některé metody orientované na uživatelské rozhraní.

Objekty rozsahu a výběru zahrnují metody orientované na obrazovku, které programům umožňují zkoumat text na obrazovce nebo text, který lze posunout na obrazovku. Tyto funkce pomáhají zpřístupnit text osobám se zhoršeným zrakem, například.

Každé rozhraní, které má příponu 2, dědí z odpovídajícího rozhraní bez přípony 2. Například ITextDocument2 dědí z ITextDocument.

Objekty TOM 2 mají následující hierarchii.

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

Objekt ITextDocument2 popisuje jednu nebo více souvislých oblastí textu nazývaných příběhy. Příběhy představují různé části dokumentu, jako je hlavní text dokumentu, záhlaví a zápatí, poznámky pod čarou, komentáře a poznámkové bloky s formátovaným textem. Pomocný zápisník se používá při překladu mezi lineárními formátovanými matematickými výrazy a rozšířenou formou. Text pomocného panelu se používá také při ukládání obsahu oblasti, která je aktuálním zdrojem kopírování při změně obsahu.

Objekt ITextRange2 je definován odsazením počáteční a koncové pozice znaku a objektem story. Neexistuje nezávisle na svém nadřazeném objektu příběhu, i když jeho text lze zkopírovat do schránky nebo do jiných umístění. Objekt oblasti textu se liší od tabulky a jiných objektů rozsahu, které jsou definovány jinými druhy posunů; například pozice řádku/sloupce nebo grafiky (x, y). Objekt rozsahu textu se může měnit různými způsoby, může vrátit duplikát sebe sama a může být příkazován ke zkopírování pozice počátečního a koncového znaku a ukazatele textu na aktuální výběr.

Explicitní objekt story není potřeba, protože objekt ITextRange lze vždy vytvořit, aby představoval jakýkoli daný text. Konkrétně může objekt ITextDocument vytvořit objekt ITextStoryRanges k výčtu příběhů v dokumentu z hlediska rozsahů s počátečními a koncovými hodnotami umístění znaků, které popisují úplné příběhy (například 0 a tomForward).

S objektem ITextStoryRanges2 explicitní příběhový objekt není potřeba, protože každý příběh je popsán ITextRange2 objektem. Konkrétně může objekt ITextDocument2 vytvořit objekt ITextStoryRanges2 objekt k vytvoření výčtu příběhů v dokumentu z hlediska rozsahů s počátečními a koncovými hodnotami umístění znaků, které popisují kompletní scénáře (například 0 a tomForward).

Rozhraní ITextRow společně s ITextRange::Move a ITextRange::Expand metody umožňují vkládat, dotazovat a měnit tabulky.

Konvence rozhraní TOM

Všechny metody TOM vrací hodnoty HRESULT. Obecně platí, že metody TOM vrací následující standardní hodnoty.

  • E_OUTOFMEMORY
  • Chyba: Neplatný argument
  • E_NOTIMPL (Není implementováno)
  • E_FILENOTFOUND – Soubor nebyl nalezen
  • E_ACCESSDENIED
  • E_FAIL
  • CO_E_RELEASED
  • NOERROR (stejné jako S_OK)
  • S_FALSE

Mějte na paměti, že pokud je odstraněna instance úprav přidružená k objektu TOM, například ITextRange, objekt TOM se stane zbytečným a všechny jeho metody vrátí CO_E_RELEASED.

Kromě HRESULT návratových hodnot zahrnuje mnoho metod výstupní parametry, které jsou ukazateli použitými k vrácení hodnot. U všech rozhraní byste měli před použitím zkontrolovat všechny parametry ukazatele, abyste měli jistotu, že jsou nenulové. Pokud předáte hodnotu null metodě, která vyžaduje platný ukazatel, metoda vrátí E_INVALIDARG. Volitelné ukazatele s nulovými hodnotami se ignorují.

K získání a nastavení vlastností použijte metody s předponami Get a Set. Logické proměnné používají tomFalse (0) pro FALSEa tomTrue (-1) pro TRUE.

Konstanty TOM jsou definovány v tomConstants typ výčtu a začínají předponou tom, například tomWord.

Typ tomBool

Mnoho metod TOM používá speciální typ proměnné s názvem "tomBool" pro atributy RTF, které mají binární stavy. Typ tomBool se liší od typu Boolean, protože může mít čtyři hodnoty: tomTrue, tomFalse, tomTogglea tomUndefined. Hodnoty tomTrue a tomFalse označují hodnotu true a false. Hodnota tomToggle slouží k přepnutí vlastnosti. Hodnota tomUndefined, tradičně nazývaná NINCH, je speciální hodnota bez vstupu a bez změny, která pracuje s datovými typy long, float a COLORREF. U řetězců je tomUndefined (nebo NINCH) reprezentován řetězcem null. Pokud se při operacích nastavení vlastností použije tomUndefined, nedojde k změně cílové vlastnosti. Při získávání vlastností tomUndefined znamená, že znaky v rozsahu mají různé hodnoty (zobrazuje šedé zaškrtávací políčko v dialogových oknech vlastností).

Matematické navýšení a snížení

Pomocí metody ITextRange2::BuildUpMath můžete převést lineární formátované matematické výrazy na předdefinované verze. Metoda ITextRange2::Linearize provede opačný převod, označovaný jako linearizace nebo sestavení dolů, k převodu integrovaných verzí matematických výrazů zpět do lineárního formátu. Funkce matematického sestavení je užitečná, když potřebujete exportovat prostý text nebo povolit určité typy úprav.

TOM RTF

Ve službě TOM lze výměnu rtfů dosáhnout sadami explicitních volání metod nebo přenosy rtf ve formátu RTF (Rich Text Format). Tato část poskytuje tabulky řídících slov RTF pro vlastnosti odstavce a znakové vlastnosti.

Ovládací slova odstavce RTF TOM

Řídící slovo Význam
\ fi n Odsazení prvního řádku (výchozí hodnota: nula).
\udržet Zachovat odstavec beze změny.
uchování Pokračujte k dalšímu odstavci.
\ li n Levé odsazení (výchozí hodnota je nula).
bez řádky Žádné číslování řádků.
\ nowidctlpar Vypněte ovládací prvek vdova/osamocené.
\ pagebb Konec stránky před odstavcem
\par Nový odstavec.
\ pard Obnoví výchozí vlastnosti odstavce.
\ ql Zarovnané doleva (výchozí).
\ qr Zarovnané doprava.
\ qj Odůvodněný.
\Qc Soustředěný.
\ ri n Odsazení vpravo (výchozí hodnota je nula).
\ s n Styl n.
\ sa n Mezera za (výchozí hodnota je žádná).
\ sb n Mezera před (výchozí hodnota je nula).
\ sl n Pokud chybí nebo pokud n=1000, určuje řádkování nejvyšší znak řádku (řádkování s jedním řádkem); pokud n> nula, použije se alespoň tato velikost; pokud n je < nula, přesně |n| se používá. Řádkování je vícenásobné řádkování, pokud následuje \ slmult 1.
\ slmult m Následuje \ sl. m = nula: Alespoň nebo přesně řádkování, jak je popsáno \ sl n. m = 1: řádkování = n/240krát jednořádkovou mezeru.
\ tb n Pozice tabulátoru v twipech od levého okraje
\ tldot Tečky vodicích tabulátorů
\ tleq Vedoucí znak je rovnítko.
\ tlhyph Vodicí spojovníky
\ tlth Vodicí čára s tlustým oddělovačem.
\ tlul Podtržení vodicího znaku
\ tqc Centrovaná záložka
\ tqdec Desetinná čárka.
\ tqr Tabulátor zarovnání doprava
\ tx n Pozice tabulátoru v twipsech od levého okraje.

 

Ovládací slova formátu znaků RTF v TOM

Řídící slovo Význam
\ animace n Nastaví typ animace na n.
\ b Tučný.
\caps Všechna velká písmena.
\ cf n Barva popředí (výchozí hodnota je tomAutocolor).
\ cs n Styl písma n.
\ dn n Pozice dolního textu v půlbodech (výchozí hodnota je 6).
\ embo Vypouklý.
\ f n Číslo písma n odkazuje na položku v tabulce písem.
\ fs n Velikost písma v polovičních bodech (výchozí hodnota je 24).
\ zvýraznění n Barva pozadí (výchozí nastavení je tomAutocolor).
\ i Kurzíva.
\ impr Otisk.
\ lang n Aplikuje jazyk na znak. n je číslo odpovídající jazyku. \ kontrolní slovo \ plain obnoví jazykovou vlastnost na jazyk definovaný v \ deflang n nastavení dokumentu.
\ nosupersub Deaktivuje horní nebo dolní index.
\ outl Osnova.
\ jednoduchý Obnoví vlastnosti formátování znaků na výchozí hodnotu definovanou aplikací. Přidružené vlastnosti formátování znaků (popsané v části Přidružené vlastnosti znaků ve specifikaci RTF) jsou také resetované.
\ scaps Malá kapitálka.
\Shade Stín.
stávka Přeškrtnutí.
\ pod Použije dolejší index k textu a zmenší velikost písma podle informací o písmu.
\super Použije horní index na text a zmenšuje velikost bodu podle informací o písmu.
\ ul Průběžné podtržení \ ul0 vypne veškeré podtržení.
\ uld Tečkované podtržení.
\ uldb Dvojité podtržení.
\ulnone Zastaví veškeré podtržení.
\ ulw Podtržení slova
\ up n Umístění horního indexu v půlbodech (výchozí hodnota je 6).
\ v Skrytý text

 

Hledání formátovaného textu

Pomocí metod TOM můžete najít formátovaný text definovaný rozsahem textu. Nalézt takový bohatý text je často potřeba při zpracování textu, i když to nikdy nebylo dosaženo v textovém procesoru "co vidíte, to dostanete" (WYSIWYG). Existuje výrazně širší oblast porovnávání formátovaného textu, která umožňuje ignorovat určité vlastnosti formátování znaků nebo zahrnout formátování odstavců a/nebo obsah objektů, avšak tato zobecnění přesahují rámec této části.

Jedním z důvodů této funkce je použití textového dialogového okna Najít k definování formátovaného textu, který chcete v dokumentu najít. Dialogové okno by bylo implementováno pomocí bohatého ovládacího prvku pro úpravy a metody TOM by se použily k provádění hledání v dokumentu. Požadovaný formátovaný text z dokumentu můžete zkopírovat do dialogového okna Najít nebo ho zadat a naformátovat přímo v dialogovém okně Najít.

Následující příklad ukazuje, jak pomocí metod TOM najít text obsahující kombinace přesného formátování znaků. Algoritmus vyhledává prostý text v oblasti shody, která se jmenuje pr1. Pokud je nalezen prostý text, je odkazován na rozsah zkušební verze, který má název pr2. Potom se k procházení zkušebního rozsahu používají dva rozsahy kurzoru (prip1 a prip2), které porovnávají formátování znaků s pr1. Pokud přesně odpovídají, vstupní rozsah (zadaný ppr) se aktualizuje tak, aby ukazoval na text zkušebního rozsahu a funkce vrátí počet znaků ve shodném rozsahu. Dva objekty ITextFont, pf1 a pf2, jsou použity při porovnání formátování znaků. Jsou připojeny k rozsahům vkládacích bodů prip1 a 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;
}

Přístupnost TOM

TOM poskytuje podporu přístupnosti prostřednictvím rozhraní ITextSelection a ITextRange rozhraní. Tato část popisuje metody, které jsou užitečné pro přístupnost a také způsob, jak program může určit x, y umístění obrazovky objektu.

Vzhledem k tomu, že programy přístupnosti založené na uživatelském rozhraní obvykle pracují s obrazovkou a myší, je běžným zájmem najít odpovídající ITextDocument rozhraní pro aktuální umístění myši (v souřadnicích obrazovky). Následující části představují dva způsoby, jak určit správné rozhraní:

Další informace naleznete ve specifikaci Microsoft Active Accessibility. Po získání objektu z pozice na obrazovce můžete použít rozhraní ITextDocument a volat metodou RangeFromPoint pro získání prázdného rozsahu objektu na cp, který odpovídá pozici na obrazovce.

Rozhraní ze spuštěné tabulky objektů

Tabulka běžících objektů (ROT) udává, jaké instance objektů jsou aktivní. Dotazováním této tabulky můžete urychlit proces připojení klienta k objektu, když už je objekt spuštěný. Než budou mít programy přístup k rozhraním TOM prostřednictvím spuštěné tabulky objektů, musí se instance TOM s oknem zaregistrovat v ROT pomocí monikeru. Vytvoříte moniker z řetězce obsahující šestnáctkové hodnoty jeho HWND. Následující ukázka kódu ukazuje, jak to provést.

// 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
}

Rozhraní pro zprávy z oken

Zpráva EM_GETOLEINTERFACE poskytuje jiný způsob, jak získat rozhraní IUnknown pro objekt na dané pozici obrazovky. Jak je popsáno v rozhraní ze spuštěné tabulky objektů, získáte HWND pro pozici na obrazovce a pak tuto zprávu odešlete do toho HWND. Zpráva EM_GETOLEINTERFACE je specifická pro úpravy a vrací ukazatel na rozhraní IRichEditOle v proměnné adresované lParam.

Tip Pokud je vrácen ukazatel (nezapomeňte nastavit objekt, na který lParam odkazuje, na hodnotu null před odesláním zprávy), můžete zavolat jeho metodu IUnknown::QueryInterface k získání rozhraní ITextDocument. Tento přístup ilustruje následující ukázka kódu.

    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
    }

Metody orientované na přístupnost

Některé metody TOM jsou zvláště užitečné pro navigaci po obrazovce, zatímco jiné metody TOM vylepšují, co můžete dělat, když dorazíte na místa zájmu. Následující tabulka popisuje nejužitečnější metody.

Metoda Jak podporuje přístupnost
GetSelection Tato metoda získá aktivní výběr, který lze použít pro různé účely orientované na zobrazení, jako je zvýraznění textu a posouvání.
RozsahZBodu Při použití pro aktivní výběr je zaručeno, že tato metoda získá rozsah přidružený k určitému zobrazení.
Rozbalit Zvětší rozsah textu tak, aby všechny částečné jednotky, které obsahuje, byly zcela obsaženy. Například Expand(tomWindow) rozšíří rozsah tak, aby zahrnoval viditelnou část příběhu rozsahu.
GetDuplicate Při použití pro aktivní výběr je zaručeno, že tato metoda získá rozsah přidružený k určitému zobrazení. Viz popis RangeFromPoint.
GetPoint Získá souřadnice obrazovky pro pozici počátečního nebo koncového znaku v oblasti textu.
ScrollIntoView Posune oblast textu do zobrazení.
SetPoint Vybere text až do zadaného bodu.

 

Sady odpovídajících znaků

Parametr varianty různých metod Move* v ITextRange, například MoveWhile a MoveUntil, může obsahovat výslovný řetězec nebo sadu znaků či 32bitový index shody. Indexy jsou definovány buď rozsahy Unicode, nebo GetStringTypeEx znakové sady. Rozsah Unicode počínaje n a délkou l (< 32768) je dán indexem n + (l << 16) + 0x80000000. Například základní řecká písmena jsou definována CR_Greek = 0x805f0370 a tisknutelné znaky ASCII jsou definovány CR_ASCIIPrint = 0x805e0020. Kromě toho metoda MoveWhile a MoveUntil umožňují rychle obejít rozsah znaků v libovolné GetStringTypeEx znakové sadě nebo v rozsahu znaků, který není v žádné z těchto znakových sad.

SadyGetStringTypeExjsou určeny hodnotami pro Ctype1, Ctype2a Ctype3a jsou definovány následujícím způsobem.

Cset Význam
Ctype1 Kombinace typů CT_CTYPE1
Ctype2 + tomCType2 Libovolný typ CT_CTYPE2.
Ctype3 + tomCType3 Kombinace typů CT_CTYPE3.

 

Konkrétně Ctype1 může být libovolná kombinace následujících.

Název Ctype1 Hodnota Význam
C1_UPPER 0x0001 Napsaný velkými písmeny.
C1_DOLNÍ 0x0002 Malými písmeny.
C1_DIGIT 0x0004 Desetinné číslice.
C1_SPACE 0x0008 Znaky mezery.
C1_PUNCT 0x0010 Interpunkce.
C1_CNTRL 0x0020 Řídicí znaky.
C1_BLANK 0x0040 Prázdné znaky
C1_XDIGIT 0x0080 Šestnáctkové číslice.
C1_ALPHA 0x0100 Libovolný lingvistický znak (abecední, slabiky nebo ideografické).
C1_DEFINED 0x0200 Definovaný znak, ale ne jeden z ostatních typů C1_*.

 

Typy Ctype2 podporují správné rozložení textu Unicode. Směrové atributy jsou přiřazeny tak, aby obousměrný algoritmus rozložení standardizovaný kódováním Unicode vytvořil přesné výsledky. Tyto typy se vzájemně vylučují. Další informace o použití těchto atributů naleznete v tématu Standard Unicode: Worldwide Character Encoding, Svazky 1 a 2, Addison-Wesley Publishing Company: 1991, 1992.

Název CType2 Hodnota Význam
Silný:
C2_ZLEVADOPRAVA 0x1 Zleva doprava.
C2_RIGHTTOLEFT 0x2 Zprava doleva
Slabý:
C2_EUROPENUMBER 0x3 Evropské číslo, evropská číslice.
C2_EUROPESEPARATOR 0x4 Evropský číselný oddělovač.
C2_EUROPETERMINATOR 0x5 Evropský číselný ukončovací znak.
C2_ARABICNUMBER 0x6 Arabské číslo.
C2_COMMONSEPARATOR 0x7 Běžný číselný oddělovač
Neutrální:
C2_BLOCKSEPARATOR 0x8 Oddělovač bloků
C2_SEGMENTSEPARATOR 0x9 Oddělovač segmentů
C2_WHITESPACE 0xA Bílé místo.
C2_OTHERNEUTRAL 0xB Ostatní neutrální.
Není použitelné
C2_NEAPLIKOVATELNÉ 0x0 Žádný implicitní směr.

 

Typy Ctype3 jsou určené jako zástupné symboly pro rozšíření typů POSIX vyžadovaných pro obecné zpracování textu nebo pro standardní funkce knihovny jazyka C.

Název CType3 Hodnota Význam
C3_NONSPACING 0x1 Nespisová značka
C3_DIACRITIC 0x2 Diakritické znaménko bez mezery
C3_VOWELMARK 0x4 Samohláska bez mezery.
C3_SYMBOL 0x8 Symbol.
C3_KATAKANA 0x10 Katakana znak.
C3_HIRAGANA 0x20 Hiragana znak.
C3_HALFWIDTH 0x40 Znak s poloviční šířkou.
C3_FULLWIDTH 0x80 Znak s plnou šířkou.
C3_Ideogram 0x100 Ideografický znak.
C3_KASHIDA 0x200 Arabský znak Kašidy.
C3_ALPHA 0x8000 Všechny lingvistické znaky (abecední, slabiky a ideografické).
C3_NEPŘIHLÍŽÍ_SE 0x0 Nelze použít.

 

Sada EDK (Edit Development Kit) může obsahovat definice indexu pVar pro následující oblasti popsané ve standardu Unicode.

Znaková sada Rozsah Unicode Znaková sada Rozsah Unicode
ASCII 0x0 – 0x7f ANSI (Americký národní standardizační institut) 0x0 – 0xff
ASCIIPrint 0x20 – 0x7e Latinka1 0x20 – 0xff
Latin1Supp 0xa0 – 0xff Latinxa 0x100 – 0x17f
LatinXB 0x180 – 0x24f IPAX 0x250 – 0x2af
Vesmírný Modul 0x2b0 – 0x2ff Kombinace 0x300 – 0x36f
Řečtina 0x370 – 0x3ff BasicGreek 0x370 – 0x3cf
ŘeckéSymboly 0x3d0 – 0x3ff Cyrilice 0x400 – 0x4ff
Arménština 0x530 – 0x58f Hebrejština 0x590 – 0x5ff
Základní hebrejština 0x5d0 – 0x5ea HebrejštinaXA 0x590 – 0x5cf
HebrejštinaXB 0x5eb – 0x5ff Arabština 0x600 – 0x6ff
BasicArabic 0x600 – 0x652 ArabicX 0x653 – 0x6ff
Dévanágarí 0x900 – 0x97f Bengálština 0x980 – 0x9ff
Gurmukhi 0xa00 – 0xa7f Gudžarátština 0xa80 – 0xaff
Odia 0xb00 – 0xb7f Tamilština 0xb80 – 0xbff
Teluga 0xc00 – 0xc7f Kannadština 0xc80 – 0xcff
Malajalámština 0xd00 – 0xd7f Thajština 0xe00 – 0xe7f
Laoština 0xe80 – 0xeff GeorgianX 0x10a0 – 0xa0cf
BascGeorgian 0x10d0 – 0x10ff Jamo 0x1100 – 0x11ff
LatinXAdd 0x1e00 – 0x1eff GreekX 0x1f00 – 0x1fff
GenPunct 0x2000 – 0x206f Horní index 0x2070 – 0x207f
Dolní index 0x2080 – 0x208f Horní podsítě 0x2070 – 0x209f
Měna 0x20a0 – 0x20cf CombMarkSym 0x20d0 – 0x20ff
LetterLike 0x2100 – 0x214f Číselné formuláře 0x2150 – 0x218f
Šípy 0x2190 – 0x21ff MathOps 0x2200 – 0x22ff
MiscTech 0x2300 – 0x23ff CtrlPictures 0x2400 – 0x243f
OptCharRecog 0x2440 – 0x245f EnclAlphaNum 0x2460 – x24ff
Kreslení rámečků 0x2500 – 0x257f Blokový prvek 0x2580 – 0x259f
GeometShapes 0x25a0 – 0x25ff Různé symboly 0x2600 – 0x26ff
Zdobné znaky 0x2700 – 0x27bf CJKSymPunct 0x3000 – 0x303f
Hiragana 0x3040 – 0x309f Katakana 0x30a0 – 0x30ff
Bopomofo 0x3100 – 0x312f HangulJamo 0x3130 – 0x318f
CJLMisc 0x3190 – 0x319f EnclCJK 0x3200 – 0x32ff
CJKCompatibl 0x3300 – 0x33ff Han 0x3400 – 0xabff
Korejské písmo Hangul 0xac00 – 0xd7ff UTF16Lead 0xd800 – 0xdbff
UTF16Trail 0xdc00 – 0xdfff Soukromé použití 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
Speciály 0xfff0 – 0xfffd