Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het Tekstobjectmodel (TOM) definieert een reeks tekstbewerkingsinterfaces die in verschillende mate door verschillende Microsoft-tekstoplossingen worden ondersteund, waaronder de Rich Edit Control. In dit onderwerp vindt u een algemeen overzicht van de TOM. Hierin worden de volgende onderwerpen besproken.
- TOM Versie 2-objecten
- TOM Interface-conventies
- Het type tomBool
- Wiskundige opbouw en afbouw
- TOM RTF
- Rtf-tekst zoeken
- TOM Accessibility
- Tekensmatchsets
TOM Versie 2-objecten
TOM versie 2 (TOM 2) breidt het oorspronkelijke tekstobjectmodel uit; de nieuwe interfaces zijn afgeleid van de oude interfaces. De bijgewerkte TOM-API bevat ondersteuning voor nieuwe eigenschappen voor teken- en alineaopmaak, een tabelmodel, meerdere selecties en ondersteuning voor inlineobjecten voor wiskunde en ruby.
Het TOM 2-object op het hoogste niveau wordt gedefinieerd door de ITextDocument2-interface , met methoden voor het maken en ophalen van objecten lager in de objecthiërarchie. Voor eenvoudige verwerking van tekst zonder opmaak kunt u een ITextRange2-object verkrijgen van een ITextDocument2-object en daar de meeste mee doen. Als u rtf-tekstopmaak wilt toevoegen, kunt u ITextFont2 - en ITextPara2-objecten ophalen uit een ITextRange2-object . ITextFont2 biedt het programmeer-equivalent van het dialoogvenster Indeling-lettertype in Microsoft Word en ITextPara2 biedt het equivalent van het dialoogvenster Indeling-alinea in Word.
Naast deze drie objecten op een lager niveau heeft TOM 2 een selectieobject (ITextSelection2), een ITextRange2-object met selectiemarkeringen en enkele ui-georiënteerde methoden.
Het bereik en de selectieobjecten bevatten schermgeoriënteerde methoden waarmee programma's tekst op het scherm of tekst kunnen onderzoeken die naar het scherm kunnen worden geschoven. Deze mogelijkheden helpen bijvoorbeeld om tekst toegankelijk te maken voor mensen met slechtziendheid.
Elke interface met het 2-achtervoegsel wordt overgenomen van de bijbehorende interface zonder het 2-achtervoegsel. ITextDocument2 neemt bijvoorbeeld over van ITextDocument.
De TOM 2-objecten hebben de volgende hiërarchie.
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
Een ITextDocument2-object beschrijft een of meer aaneengesloten tekstbereiken die verhalen worden genoemd. Verhalen vertegenwoordigen verschillende delen van een document, zoals de hoofdtekst van het document, kop- en voetteksten, voetnoten, aantekeningen en scratchpads met tekst met opmaak. Een scratchpad-verhaal wordt gebruikt bij het vertalen tussen lineair opgemaakte wiskundige expressies en een ingebouwde vorm. Een scratchpad-verhaal wordt ook gebruikt wanneer de inhoud van een bereik, dat de huidige kopieerbron is, wordt opgeslagen als de inhoud op het punt staat te worden veranderd.
Een ITextRange2-object wordt gedefinieerd door de verschuivingen tussen de begin- en eindtekenpositie en een verhaalobject. Het bestaat niet onafhankelijk van het bovenliggende verhaalelement, hoewel de tekst kan worden gekopieerd naar het klembord of naar andere bestemmingen. Een tekstbereikobject verschilt van spreadsheets en andere bereikobjecten, die worden gedefinieerd door andere soorten offsets; Bijvoorbeeld rij-/kolom- of grafische positie (x, y). Een tekstbereikobject kan zichzelf op verschillende manieren wijzigen, een duplicaat van zichzelf retourneren, en het kan worden opgedragen om de begin- en eindpositie van tekens en de bijbehorende verhaalaanwijzer naar de huidige selectie te kopiëren.
Er is geen expliciet verhaalobject nodig, omdat er altijd een ITextRange-object kan worden gemaakt om een bepaald verhaal weer te geven. Met name het ITextDocument-object kan een ITextStoryRanges-object maken om de verhalen in het document op te sommen in termen van bereiken met begin- en eindpositiewaarden waarmee volledige verhalen worden beschreven (zoals 0 en tomForward).
Met een ITextStoryRanges2-object is een expliciet verhaalobject niet nodig, omdat het verhaal wordt beschreven door een ITextRange2-object . In het bijzonder kan het ITextDocument2-object een ITextStoryRanges2-object maken om de verhalen in het document op te sommen in termen van bereiken met begin- en eindpositiewaarden waarmee volledige verhalen (zoals 0 en tomForward) worden beschreven.
De ITextRow-interface samen met de methoden ITextRange::Move en ITextRange::Expand bieden de mogelijkheid om tabellen in te voegen, op te vragen en te wijzigen.
TOM Interface-conventies
Alle TOM-methoden retourneren HRESULT-waarden . Over het algemeen retourneren de TOM-methoden de volgende standaardwaarden.
- E_OUTOFMEMORY
- E_INVALIDARG
- E_NOTIMPL
- E_FILENOTFOUND (Bestand niet gevonden)
- E_ACCESSDENIED
- E_FAIL
- CO_E_RELEASED
- NOERROR (hetzelfde als S_OK)
- S_FALSE
Houd er rekening mee dat als het bewerkingsexemplaar dat is gekoppeld aan een TOM-object, zoals ITextRange , wordt verwijderd, het TOM-object nutteloos wordt en alle methoden CO_E_RELEASED retourneren.
Naast de HRESULT-retourwaarden bevatten veel methoden parameters, die pointers zijn die worden gebruikt om waarden te retourneren. Voor alle interfaces moet u alle aanwijzerparameters controleren om ervoor te zorgen dat ze niet-nul zijn voordat u ze gebruikt. Als u een null-waarde doorgeeft aan een methode waarvoor een geldige aanwijzer is vereist, retourneert de methode E_INVALIDARG. Optionele aanwijzers met null-waarden worden genegeerd.
Gebruik methoden met de voorvoegsels Get en Set om eigenschappen op te halen en in te stellen. Booleaanse variabelen gebruiken tomFalse (0) voor FALSE en tomTrue (-1) voor TRUE.
TOM-constanten worden gedefinieerd in het opsommingstype tomConstants en beginnen met het voorvoegsel tom, bijvoorbeeld tomWord.
Het type tomBool
Veel TOM-methoden gebruiken een speciaal type variabele met de naam 'tomBool' voor rich-text-kenmerken met binaire statussen. Het type tomBool verschilt van het Booleaanse type omdat het vier waarden kan aannemen: tomTrue, tomFalse, tomToggle en tomUndefined. De waarden tomTrue en tomFalse geven waar en onwaar aan. De waarde tomToggle wordt gebruikt om een eigenschap in te schakelen. De tomUndefined-waarde , traditioneel NINCH genoemd, is een speciale no-input, no-change waarde die werkt met longs, floats en COLORREFs. Voor tekenreeksen wordt tomUndefined (of NINCH) vertegenwoordigd door de null-tekenreeks. Voor bewerkingen voor het instellen van eigenschappen wijzigt het gebruik van tomUndefined de doeleigenschap niet. Voor het ophalen van eigenschappen betekent tomUndefined dat de tekens in het bereik verschillende waarden hebben (het geeft het grijsgekleurde selectievakje in eigenschapsdialoogvensters).
Mathematische opbouw en afbouw
U kunt de methode ITextRange2::BuildUpMath gebruiken om lineair opgemaakte wiskundige expressies te converteren naar ingebouwde versies. De methode ITextRange2::Linearize voert de tegenovergestelde conversie uit, linearisatie of build down genoemd, om ingebouwde versies van wiskundige expressies weer te converteren naar lineaire indeling. De wiskundige opbouwfunctie is handig wanneer u tekst zonder opmaak wilt exporteren of bepaalde typen bewerkingen wilt inschakelen.
TOM RTF
In TOM kan uitwisseling van opgemaakte tekst worden uitgevoerd door sets van expliciete methode-aanroepen of door overdrachten in Rich Text Formaat (RTF). Deze sectie bevat tabellen met RTF-besturingswoorden voor alinea-eigenschappen en voor tekeneigenschappen.
TOM RTF-alinearegelwoorden
| Controlewoord | Betekenis |
|---|---|
| \ fi n | Eerste regel inspringen (de standaardwaarde is nul (0)). |
| \houden | Alinea intact houden. |
| \ behouden | Blijf bij de volgende alinea. |
| \ li n | Links inspringen (de standaardwaarde is nul). |
| \ noline | Geen regelnummering. |
| \ nowidctlpar | Schakel weduwe/weeskind-instelling uit. |
| \ pagebb | Voeg paginabreak toe voor alinea. |
| \ par | Nieuwe alinea. |
| \ pard | Hiermee stelt u de standaardparagraafeigenschappen opnieuw in. |
| \ ql | Links uitgelijnd (de standaardinstelling). |
| \Qr | Rechts uitgelijnd. |
| \ qj | Gerechtvaardigd. |
| \Qc | Gecentreerd. |
| \ ri n | Rechter inspringing (de standaardwaarde is nul). |
| \ s n | Stijl n. |
| \ sa n | Spatie erna (de standaardwaarde is nul). |
| \ sb n | Spatie vóór (de standaardwaarde is nul). |
| \ sl n | Als de regelafstand ontbreekt of n=1000, wordt de regelafstand bepaald door het hoogste teken in de regel (regelafstand met één regel); als n> nul, ten minste deze grootte wordt gebruikt; als n nul is < , precies |n | wordt gebruikt. De regelafstand is een meerregelige regelafstand als \ slmult 1 volgt. |
| \ slmult m | Volgt \ sl. m = nul: Ten minste of exact regelafstand zoals beschreven door \ sl n. m = 1: regelafstand = n/240 keer regelafstand met één regel. |
| \ tb n | Tabpositie, in twips, vanaf de linkermarge. |
| \ tldot | Tabblad leidpunten. |
| \ tleq | Gelijkteken van tab opvulteken. |
| \ tlhyph | Afbreekstreepjes voor tabs. |
| \ tlth | Tab-leider dikke streep. |
| \ tlul | Onderstreping van tableider. |
| \ tqc | Gecentreerd tabblad. |
| \ tqdec | Het tabblad Decimaal. |
| \ tqr | Tabblad Rechts leegmaken. |
| \ tx n | De tabpositie, gemeten in twips, vanaf de linkermarge. |
Besturingselementwoorden voor TOM RTF-tekenopmaak
| Controlewoord | Betekenis |
|---|---|
| \ animatie n | Hiermee stelt u het animatietype in op n. |
| \ b | Vet. |
| \caps | Alle hoofdletters. |
| \ cf n | Voorgrondkleur (de standaardwaarde is tomAutocolor). |
| \ cs n | Letterstijl n. |
| \ dn n | Subscriptpositie in halve punten (de standaardwaarde is 6). |
| \ embo | Reliëf. |
| \ f n | Lettertypenummer, n verwijst naar een vermelding in de lettertypetabel. |
| \ fs n | Tekengrootte in halve punten (de standaardwaarde is 24). |
| \ markeer n | Achtergrondkleur (de standaardwaarde is tomAutocolor). |
| ik | Cursief. |
| \ impr | Afdruk. |
| \ lang n | Hiermee past u een taal toe op een teken. n is een getal dat overeenkomt met een taal. Met het besturingselement \plain wordt de taaleigenschap opnieuw ingesteld op de taal die is gedefinieerd door \deflang n in de documenteigenschappen. |
| \ nosupersub | Hiermee schakelt u superscript of subscript uit. |
| \ outl | Overzicht. |
| eenvoudig | Hiermee stelt u de eigenschappen van tekenopmaak opnieuw in op een standaardwaarde die door de toepassing is gedefinieerd. De bijbehorende eigenschappen voor tekenopmaak (beschreven in de sectie Gekoppelde tekeneigenschappen in de RTF-specificatie) worden ook opnieuw ingesteld. |
| \ scaps | Kleine hoofdletters. |
| \elft | Schaduw. |
| staking | Doorhalen. |
| \sub | Hiermee past u subscript toe op tekst en verkleint u de puntgrootte op basis van lettertypegegevens. |
| \super | Hiermee past u superscript toe op tekst en verkleint u de puntgrootte op basis van lettertypegegevens. |
| \ ul | Doorlopende onderstreping. \ ul0 schakelt alle onderstrekingen uit. |
| \ uld | Gestreepte onderstreping. |
| \ uldb | Dubbele onderstreping. |
| \ ulnone | Stopt alle onderstrepingen. |
| \ ulw | Woord onderstreep. |
| \ up n | Superscriptpositie in halve punten (de standaardwaarde is 6). |
| \ v | Verborgen tekst. |
Rtf-tekst zoeken
U kunt TOM-methoden gebruiken om tekst met opmaak te zoeken, zoals gedefinieerd door een tekstbereik. Het exact vinden van dergelijke rijk opgemaakte tekst is vaak nodig in tekstverwerking, hoewel dit nooit is vervuld in een "Wat U Ziet Is Wat U Krijgt" (WYSIWYG) tekstverwerker. Er is duidelijk een groter domein van rich-text matching waarmee bepaalde tekenopmaakeigenschappen kunnen worden genegeerd (of om alineaopmaak en/of objectinhoud op te nemen), maar dergelijke generalisaties vallen buiten het bereik van deze sectie.
Een doel van deze functionaliteit is het gebruik van een dialoogvenster Zoeken om de rich-text die u in een document wilt lokaliseren op te geven. Het dialoogvenster zou worden geïmplementeerd met behulp van een uitgebreid besturingselement voor bewerken en TOM-methoden worden gebruikt om de zoekopdracht door het document uit te voeren. U kunt de gewenste tekst met opmaak uit het document kopiëren naar het dialoogvenster Zoeken of deze rechtstreeks invoeren en opmaken in het dialoogvenster Zoeken .
In het volgende voorbeeld ziet u hoe u TOM-methoden gebruikt om tekst te zoeken die combinaties van exacte tekenopmaak bevat. Het algoritme zoekt naar de tekst zonder opmaak in het overeenkomende bereik, genaamd pr1. Als gewone tekst wordt gevonden, wordt deze toegewezen aan een testbereik met de naam pr2. Vervolgens worden twee invoegpuntbereiken (prip1 en prip2) gebruikt om het proefbereik te doorlopen, waarbij de tekenopmaak wordt vergeleken met die van pr1. Als deze exact overeenkomen, wordt het invoerbereik (gegeven door ppr) bijgewerkt om te verwijzen naar de tekst van het proefbereik en retourneert de functie het aantal tekens in het overeenkomende bereik. Twee ITextFont-objectenpf1 en pf2worden gebruikt in de vergelijking van tekenopmaak. Ze zijn gekoppeld aan de invoegpuntbereiken prip1 en 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 Accessibility
TOM biedt ondersteuning voor toegankelijkheid via de ITextSelection - en ITextRange-interfaces . In deze sectie worden methoden beschreven die handig zijn voor toegankelijkheid en hoe een programma de positie van het x- , y-scherm van een object kan bepalen.
Aangezien toegankelijkheidsprogramma's op basis van de gebruikersinterface doorgaans met het scherm en de muis werken, is het belangrijk om de bijbehorende ITextDocument-interface te vinden voor de huidige muislocatie (in schermcoördinaten). De volgende secties bevatten twee manieren om de juiste interface te bepalen:
- Via de tabel van actieve objecten
- Via het EM_GETOLEINTERFACE bericht, dat werkt voor windowed rich edit-instanties, zolang de client zich in dezelfde procesomgeving bevindt (er is geen marshaling nodig)
Zie de Microsoft Active Accessibility-specificatie voor meer informatie. Nadat u een object op een schermpositie hebt verkregen, kunt u deze gebruiken voor een ITextDocument-interface en de RangeFromPoint-methode aanroepen om een leeg bereikobject op te halen op de cp die overeenkomt met de schermpositie.
Interface van actieve objecttabel
Een actieve objecttabel (ROT) vertelt welke objectexemplaren actief zijn. Door een query uit te voeren op deze tabel, kunt u het proces van het verbinden van een client met een object versnellen wanneer het object al wordt uitgevoerd. Voordat programma's toegang hebben tot TOM-interfaces via de actieve objecttabel, moet een TOM-exemplaar met een venster zich registreren in rot met behulp van een moniker. U construeert de moniker van een string die de hexadecimale waarde van de HWND bevat. In het volgende codevoorbeeld ziet u hoe u dit doet.
// 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
}
Interface van vensterberichten
Het EM_GETOLEINTERFACE bericht biedt een andere manier om een IUnknown-interface te verkrijgen voor een object op een bepaalde schermpositie. Zoals beschreven in interface van de actieve objecttabel, krijgt u een HWND voor de schermpositie en verzendt u dit bericht naar die HWND. Het EM_GETOLEINTERFACE bericht is uitgebreid voor bewerken en retourneert een aanwijzer naar een IRichEditOle-interface in de variabele die door lParam wordt geadresseerd.
Fooi Als een aanwijzer wordt geretourneerd (zorg ervoor dat u het object instelt waarop lParam verwijst naar null voordat u het bericht verzendt), kunt u de methode IUnknown::QueryInterface aanroepen om een ITextDocument-interface te verkrijgen. Het volgende codevoorbeeld illustreert deze benadering.
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
}
Toegankelijkheidsmethoden
Sommige TOM-methoden zijn met name handig om door het scherm te navigeren, terwijl andere TOM-methoden verbeteren wat u kunt doen wanneer u op nuttige plaatsen aankomt. In de volgende tabel worden de nuttigste methoden beschreven.
| Methode | Hoe toegankelijkheid wordt bevorderd |
|---|---|
| GetSelection- | Deze methode haalt de actieve selectie op die kan worden gebruikt voor verschillende weergavegerichte doeleinden, zoals het markeren van tekst en schuiven. |
| RangeFromPoint- | Wanneer deze methode wordt gebruikt voor een actieve selectie, krijgt deze methode gegarandeerd een bereik dat is gekoppeld aan een bepaalde weergave. |
| uitvouwen | Hiermee vergroot u een tekstbereik zodat alle gedeeltelijke eenheden die het bevat, volledig zijn opgenomen. Bijvoorbeeld, breidt Expand(tomWindow) het bereik uit om het zichtbare gedeelte van het verhaal binnen het bereik op te nemen. |
| GetDuplicate | Wanneer deze methode wordt gebruikt voor een actieve selectie, krijgt deze methode gegarandeerd een bereik dat is gekoppeld aan een bepaalde weergave. Zie de beschrijving van RangeFromPoint. |
| GetPoint | Hiermee haalt u de schermcoördinaten op voor de positie van het begin- of eindteken in het tekstbereik. |
| ScrollIntoView- | Rolt een tekstbereik in zicht. |
| SetPoint | Hiermee selecteert u tekst tot aan een opgegeven punt. |
Karaktersets
De variantparameter van de verschillende Move*-methoden in ITextRange, zoals MoveWhile en MoveUntil, kan een expliciete tekenreeks of een tekenovereenkomstset 32-bits index aannemen. De indexen worden gedefinieerd door Unicode-reeksen of GetStringTypeEx-tekensets. Het Unicode-bereik vanaf n en lengte l (< 32768) wordt gegeven door de index n + (l << 16) + 0x80000000. Eenvoudige Griekse letters worden bijvoorbeeld gedefinieerd door CR_Greek = 0x805f0370 en afdrukbare ASCII-tekens worden gedefinieerd door CR_ASCIIPrint = 0x805e0020. Bovendien kunt u met de methoden MoveWhile en MoveUntil snel een reeks tekens in een GetStringTypeEx-tekenset overslaan, of in een reeks tekens die zich niet in een van deze tekensets bevinden.
De GetStringTypeEx-sets worden opgegeven door de waarden voor Ctype1, Ctype2 en Ctype3 en worden als volgt gedefinieerd.
| Cset | Betekenis |
|---|---|
| Ctype1 | Combinatie van CT_CTYPE1 typen. |
| Ctype2 + tomCType2 | Iedere type CT_CTYPE2. |
| Ctype3 + tomCType3 | Combinatie van CT_CTYPE3 types. |
Ctype1 kan een combinatie van het volgende zijn.
| Ctype1-naam | Waarde | Betekenis |
|---|---|---|
| C1_UPPER | 0x0001 | Hoofdletters. |
| C1_LOWER | 0x0002 | Onderkast. |
| C1_DIGIT | 0x0004 | Decimale cijfers. |
| C1_SPACE | 0x0008 | Spatietekens |
| C1_PUNCT | 0x0010 | Interpunctie. |
| C1_CNTRL | 0x0020 | Besturingstekens. |
| C1_BLANK | 0x0040 | Lege tekens. |
| C1_XDIGIT | 0x0080 | Hexadecimale cijfers. |
| C1_ALPHA | 0x0100 | Elk taalkundig teken (alfabetisch, lettergreep of ideografisch). |
| C1_DEFINED | 0x0200 | Een gedefinieerd teken, maar niet een van de andere C1_* typen. |
De Ctype2-typen ondersteunen de juiste indeling van Unicode-tekst. De richtingkenmerken worden toegewezen, zodat het algoritme voor de indeling in twee richtingen dat is gestandaardiseerd door Unicode nauwkeurige resultaten produceert. Deze typen sluiten elkaar wederzijds uit. Zie De Unicode-standaard: Worldwide Character Encoding, Volumes 1 en 2, Addison-Wesley Publishing Company: 1991, 1992 voor meer informatie over het gebruik van deze kenmerken.
| CType2-naam | Waarde | Betekenis |
|---|---|---|
| Sterk: | ||
| C2_LEFTTORIGHT | 0x1 | Van links naar rechts. |
| C2_RECHTSNAARLINKS | 0x2 | Van rechts naar links. |
| Zwak: | ||
| C2_EUROPENUMBER | 0x3 | Europees nummer, Europees cijfer. |
| C2_EUROPESEPARATOR | 0x4 | Europees cijferscheidingsteken. |
| C2_EUROPETERMINATOR | 0x5 | Europese numerieke sluittekens. |
| C2_ARABICNUMBER | 0x6 | Arabisch cijfer. |
| C2_COMMONSEPARATOR | 0x7 | Gangbaar numeriek scheidingsteken. |
| Neutraal: | ||
| The translation remains the same: C2_BLOCKSEPARATOR | 0x8 | Blokscheidingsteken. |
| C2_SEGMENTSEPARATOR | 0x9 | Segmentafscheider. |
| C2_WHITESPACE | 0xA | Witruimte. |
| C2_OTHERNEUTRAL | 0xB | Andere neutralen. |
| Niet van toepassing: | ||
| C2_NIET_TOEPASSELIJK | 0x0 | Geen impliciete richting. |
De Ctype3-typen zijn bedoeld als tijdelijke aanduidingen voor extensies voor de POSIX-typen die vereist zijn voor algemene tekstverwerking of voor de standaard-C-bibliotheekfuncties.
| CType3-naam | Waarde | Betekenis |
|---|---|---|
| C3_NONSPACING | 0x1 | Niet-spacerende markering |
| C3_DIACRITIC | 0x2 | Diakritisch niet-combinerend teken. |
| C3_VOWELMARK | 0x4 | Klinker niet-scheidende teken. |
| C3_SYMBOL | 0x8 | Symbool. |
| C3_KATAKANA | 0x10 | Katakana karakter. |
| C3_HIRAGANA | 0x20 | Hiragana teken. |
| C3_HALFWIDTH | 0x40 | Teken met halve breedte. |
| C3_VOLLEDIGE BREEDTE | 0x80 | Teken met volledige breedte. |
| C3_IDEOGRAPH | 0x100 | Ideografisch teken. |
| C3_KASHIDA | 0x200 | Arabisch Kashida-teken. |
| C3_ALPHA | 0x8000 | Alle taalkundige tekens (alfabetisch, syllabisch en ideografisch). |
| C3_NOTAPPLICABLE | 0x0 | Niet van toepassing. |
Een Edit Development Kit (EDK) kan pVar-indexdefinities bevatten voor de volgende reikwijdtes die worden beschreven in de Unicode-standaard.
| Tekenset | Unicode-bereik | Tekenset | Unicode-bereik |
|---|---|---|---|
| ASCII | 0x0- 0x7f | American National Standards Institute (ANSI) | 0x0- 0xff |
| ASCIIPrint | 0x20- 0x7e | Latijns1 | 0x20- 0xff |
| Latin1Supp | 0xa0- 0xff | LatinXA | 0x100- 0x17f |
| LatinXB | 0x180- 0x24f | IPAX | 0x250- 0x2af |
| SpaceMod | 0x2b0- 0x2ff | Combineren | 0x300- 0x36f |
| Grieks | 0x370- 0x3ff | BasicGreek | 0x370- 0x3cf |
| GriekseSymbolen | 0x3d0- 0x3ff | Cyrillisch | 0x400- 0x4ff |
| Armeens | 0x530- 0x58f | Hebreeuws | 0x590- 0x5ff |
| BasicHebrew | 0x5d0- 0x5ea | HebrewXA | 0x590- 0x5cf |
| Hebreeuws XB | 0x5eb- 0x5ff | Arabisch | 0x600- 0x6ff |
| BasicArabic | 0x600- 0x652 | ArabicX | 0x653- 0x6ff |
| Devanagari | 0x900- 0x97f | Bengaals | 0x980- 0x9ff |
| Gurmukhi | 0xa00-0xa7f | Gujarati | 0xa80- 0xaff |
| Odia | 0xb00- 0xb7f | Tamil | 0xb80- 0xbff |
| Teluga | 0xc00- 0xc7f | Kannada | 0xc80- 0xcff |
| Malajalam | 0xd00- 0xd7f | Thais | 0xe00- 0xe7f |
| Laotiaans | 0xe80-0xeff | GeorgianX | 0x10a0- 0xa0cf |
| BascGeorgian | 0x10d0- 0x10ff | Jamo | 0x1100- 0x11ff |
| LatinXAdd | 0x1e00-0x1eff | GreekX | 0x1f00- 0x1fff |
| GenPunct | 0x2000- 0x206f | Superscript | 0x2070- 0x207f |
| Subscriptie | 0x2080- 0x208f | SuperSubscript | 0x2070- 0x209f |
| Valuta | 0x20a0- 0x20cf | CombMarkSym | 0x20d0- 0x20ff |
| LetterLike | 0x2100- 0x214f | Getalformulieren | 0x2150- 0x218f |
| Pijlen | 0x2190- 0x21ff | MathOps | 0x2200- 0x22ff |
| MiscTech | 0x2300- 0x23ff | CtrlPictures | 0x2400- 0x243f |
| OptCharRecog | 0x2440- 0x245f | EnclAlphaNum | 0x2460- x24ff |
| BoxDrawing | 0x2500- 0x257f | Blokelement | 0x2580- 0x259f |
| GeometShapes | 0x25a0- 0x25ff | Diverse Symbolen | 0x2600- 0x26ff |
| Dingbats | 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 |
| Hangul | 0xac00—0xd7ff | UTF16Lead | 0xd800- 0xdbff |
| UTF16Trail | 0xdc00- 0xdfff | Privégebruik | 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 |
| Aanbiedingen | 0xfff0—0xfffd |