Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
- TOM Objekty verze 2
- Konvence Rozhraní TOM
- typ tomBool
- Matematické sestavení a rozklad
- TOM RTF
- Hledání formátovaného textu
-
TOM přístupnost
- rozhraní ze spuštěné tabulky objektů
- rozhraní ze zpráv oken
- metody orientované na přístupnost
- Sady pro přiřazení znaků
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í:
- pomocí tabulky běžícího objektu
- Prostřednictvím zprávy EM_GETOLEINTERFACE, která funguje pro instance bohatého textového editoru s okny, za předpokladu, že je klient ve stejném prostoru procesu (není potřeba maršálování)
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 |