Delen via


Over tekstobjectmodel

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 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:

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