Informazioni sul modello a oggetti di testo
Text Object Model (TOM) definisce un set di interfacce di manipolazione del testo supportate in vari gradi da diverse soluzioni di testo Microsoft, incluso il controllo rich edit. Questo argomento offre una panoramica generale di TOM. Vengono illustrati gli argomenti seguenti.
- OGGETTI TOM versione 2
- convenzioni dell'interfaccia TOM
- Il tipo tomBool
- Aumento matematico e diminuzione
- TOM RTF
- ricerca di testo ricco
- TOM Accessibility
- insiemi di corrispondenze di caratteri
Oggetti TOM versione 2
TOM versione 2 (TOM 2) estende il modello a oggetti di testo originale; le nuove interfacce sono derivate da quelle precedenti. L'API TOM aggiornata include il supporto per le nuove proprietà di formato carattere e paragrafo, un modello di tabella, una selezione multipla e il supporto di oggetti inline per matematica e ruby.
L'oggetto TOM 2 di primo livello è definito dall'interfaccia ITextDocument2, che include metodi per la creazione e il recupero di oggetti inferiori nella gerarchia degli oggetti. Per una semplice elaborazione di testo normale, è possibile ottenere un oggetto ITextRange2 da un oggetto ITextDocument2 ed eseguire la maggior parte di tutto. Se è necessario aggiungere la formattazione RTF, è possibile ottenere gli oggetti ITextFont2 e ITextPara2 da un oggetto ITextRange2. ITextFont2 fornisce l'equivalente di programmazione della finestra di dialogo formato-carattere di Microsoft Word e ITextPara2 fornisce l'equivalente della finestra di dialogo formato paragrafo di Word.
Oltre a questi tre oggetti di livello inferiore, TOM 2 ha un oggetto di selezione (ITextSelection2), che è un oggetto ITextRange2 con evidenziazione della selezione e alcuni metodi orientati all'interfaccia utente.
Gli oggetti intervallo e selezione includono metodi orientati allo schermo che consentono ai programmi di esaminare il testo sullo schermo o il testo che è possibile scorrere sullo schermo. Queste funzionalità consentono di rendere il testo accessibile alle persone con problemi di vista, ad esempio.
Ogni interfaccia con il suffisso 2 eredita dall'interfaccia corrispondente senza il suffisso 2. Ad esempio, ITextDocument2 eredita da ITextDocument.
Gli oggetti TOM 2 hanno la gerarchia seguente.
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
Un oggetto ITextDocument2 descrive uno o più intervalli contigui di testo denominati storie. Le storie rappresentano varie parti di un documento, ad esempio il testo principale del documento, le intestazioni e i piè di pagina, le note a piè di pagina, le annotazioni e i riquadri rtf. Viene utilizzato un processo di annotazione temporanea per la traduzione tra espressioni matematiche in formato lineare e forme sviluppate. Si utilizza una storia temporanea anche quando si salva il contenuto di un intervallo che è l'origine di copia corrente e il contenuto sta per essere modificato.
Un oggetto ITextRange2 è definito dagli offset di posizione iniziale e finale e da un oggetto story. Non esiste indipendentemente dalla storia principale, ma il suo testo può essere copiato negli Appunti o in altre destinazioni. Un oggetto intervallo di testo è diverso dal foglio di calcolo e da altri oggetti intervallo, definiti da altri tipi di offset; ad esempio, riga/colonna o posizione grafica (x, y). Un oggetto intervallo di testo può modificare se stesso in vari modi, può restituire un duplicato di se stesso e può essere utilizzato per copiare le posizioni dei caratteri iniziali e finali e il puntatore del brano alla selezione corrente.
Non è necessario un oggetto story esplicito, poiché un oggetto ITextRange può sempre essere creato per rappresentare qualsiasi brano specifico. In particolare, l'oggetto ITextDocument può creare un oggetto ITextStoryRanges per enumerare le storie nel documento in termini di intervalli con valori di posizione dei caratteri iniziale e finale che descrivono le storie complete (ad esempio, 0 e tomForward).
Con un oggetto ITextStoryRanges2 non è necessario un oggetto story esplicito, poiché ogni brano è descritto da un oggetto ITextRange2. In particolare, l'oggetto ITextDocument2 può creare un oggetto ITextStoryRanges2 per enumerare le storie nel documento in termini di intervalli con valori di posizione dei caratteri iniziale e finale che descrivono le storie complete (ad esempio, 0 e tomForward).
L'interfaccia ITextRow insieme ai metodi ITextRange::Move e ITextRange::Expand consentono di inserire, eseguire query e modificare tabelle.
Convenzioni dell'interfaccia TOM
Tutti i metodi TOM restituiscono valori HRESULT. In generale, i metodi TOM restituiscono i valori standard seguenti.
- E_OUTOFMEMORY
- E_INVALIDARG
- E_NOTIMPL
- E_FILENOTFOUND
- E_ACCESSDENIED
- E_FAIL
- CO_E_RELEASED
- NOERROR (uguale a S_OK)
- S_FALSE
Tenere presente che se l'istanza di modifica associata a un oggetto TOM viene eliminata, ad esempio IntervalloDiTesto, l'oggetto TOM diventa inutile e tutti i relativi metodi restituiscono CO_E_RELEASED.
Oltre al HRESULT valori restituiti, molti metodi includono parametri out, che sono puntatori usati per restituire valori. Per tutte le interfacce, è necessario controllare tutti i parametri del puntatore per assicurarsi che siano diversi da zero prima di usarli. Se si passa un valore Null a un metodo che richiede un puntatore valido, il metodo restituisce E_INVALIDARG. I puntatori facoltativi con valori Null vengono ignorati.
Usare i metodi con prefissi Get e Set per ottenere e impostare le proprietà. Le variabili booleane usano tomFalse (0) per FALSEe tomTrue (-1) per TRUE.
Le costanti TOM vengono definite nel tipo di enumerazionetomConstants e iniziano con il prefisso tom, ad esempio tomWord.
Tipo tomBool
Molti metodi TOM usano un tipo speciale di variabile denominato "tomBool" per gli attributi RTF con stati binari. Il tipo tomBool è diverso dal tipo booleano perché può accettare quattro valori: tomTrue, tomFalse, tomTogglee tomUndefined. I valori tomTrue e tomFalse indicano vero e falso. Il valore tomToggle viene usato per attivare o disattivare una proprietà. Il valore tomUndefined, più tradizionalmente chiamato NINCH, è un valore speciale senza input, nessuna modifica che funziona con longs, float e COLORREFs. Per le stringhe, tomUndefined (o NINCH) è rappresentato dalla stringa Null. Per le operazioni di impostazione delle proprietà, l'uso di tomUndefined non modifica la proprietà di destinazione. Per le operazioni di recupero delle proprietà, tomUndefined significa che i caratteri nell'intervallo hanno valori diversi (fornisce la casella di controllo grigia nelle finestre di dialogo delle proprietà).
Costruisci in su e costruisci in giù matematicamente
È possibile usare il metodo ITextRange2::BuildUpMath per convertire espressioni matematiche formattate in modo lineare in versioni predefinite. Il metodo ITextRange2::Linearize esegue la conversione opposta, chiamata linearizzazione o riduzione, per convertire le versioni accumulate delle espressioni matematiche nuovamente in formato lineare. La funzionalità di compilazione matematica è utile quando è necessario esportare testo normale o per abilitare determinati tipi di modifica.
TOM RTF
Nell'interfaccia TOM, lo scambio di testo formattato può essere effettuato tramite set di chiamate di metodo esplicite o attraverso trasferimenti in formato Rich Text (RTF). In questa sezione vengono fornite tabelle di parole di controllo RTF per le proprietà di paragrafo e per le proprietà dei caratteri.
TOM RTF Parole di Controllo del Paragrafo
Parola di controllo | Significato |
---|---|
\ fi n | Rientro della prima riga (il valore predefinito è zero). |
\mantenere | Mantenere intatto il paragrafo. |
mantenere | Continuare con il paragrafo successivo. |
\ li n | Rientro sinistro (il valore predefinito è zero). |
senza linea | Nessuna numerazione di riga. |
\ nowidctlpar | Disattivare il controllo vedova/orfano. |
\ pagebb | Interrompi pagina prima del paragrafo. |
\ par | Nuovo paragrafo. |
\pard | Reimposta le proprietà predefinite del paragrafo. |
\Ql | Allineato a sinistra (impostazione predefinita). |
\ qr | Allineato a destra. |
\ qj | Giustificato. |
\ qc | Centrato. |
\ ri n | Rientro destro (il valore predefinito è zero). |
\ s n | Stile n. |
\ sa n | Spazio dopo (il valore predefinito è zero). |
\ sb n | Spazio prima (il valore predefinito è zero). |
\ sl n | Se mancante o se n=1000, la spaziatura riga è determinata dal carattere più alto nella riga (spaziatura a riga singola); se n> zero, almeno questa dimensione viene utilizzata; se n è < zero, esattamente |n| viene utilizzato. L'interlinea è multipla se \ slmult 1 segue. |
\ slmult m | Segue \ sl. m = zero: Spaziatura minima o Esatta riga come descritto da \ sl n. m = 1: spaziatura riga = n/240 volte la spaziatura a riga singola. |
\ tb n | Posizione della scheda barra, in twip, dal margine sinistro. |
\ tldot | Puntini di tabulazioni. |
\ tleq | Segno di uguale di tabulazioni. |
\ tlhyph | Segni meno tabulazioni. |
\ tlth | Riempimento di tabulazione linea spessa. |
\ tlul | Sottolineatura con leader di tabulazione. |
\Tqc | Tabulazione centrata. |
\ tqdec | Tabulazioni decimali. |
\ tqr | Tabulazione destra. |
\ tx n | Posizione della tabulazione, in twips, dal margine sinistro. |
Parole di controllo del formato carattere RTF di TOM
Parola di controllo | Significato |
---|---|
\ animazione n | Imposta il tipo di animazione su n. |
\ b | Audace. |
\Tappi | Tutte maiuscole. |
\ cf n | Colore di primo piano (il valore predefinito è tomAutocolor). |
\ cs n | Stile del carattere n. |
\ dn n | Posizione pedice in mezzi punti (il valore predefinito è 6). |
\ embo | Goffrato. |
\ f n | Il numero di carattere n fa riferimento a una voce nella tabella dei tipi di carattere. |
\ fs n | Dimensioni del carattere in mezzo punti (il valore predefinito è 24). |
\ highlight n | Colore di sfondo (il valore predefinito è tomAutocolor). |
\ i | Corsivo. |
\ impr | Imprimere. |
\ lang n | Applica una lingua a un carattere. n è un numero corrispondente a una lingua. La parola di controllo \ normale reimposta la proprietà della lingua sulla lingua definita da \ deflang n nelle proprietà del documento. |
\ nosupersub | Disattiva apice o pedice. |
\ outl | Struttura |
\pianura | Reimposta le proprietà di formattazione dei caratteri su un valore predefinito definito dall'applicazione. Vengono reimpostate anche le proprietà di formattazione dei caratteri associate (descritte nella sezione Proprietà carattere associate nella specifica RTF). |
\ scaps | Maiuscoletto. |
\alosa | Ombra. |
\sciopero | Testo barrato. |
\ sottoscritto | Applica il pedice al testo e riduce la dimensione del carattere in base alle informazioni sul font. |
\super | Applica l'apice al testo e riduce le dimensioni dei punti in base alle informazioni sul tipo di carattere. |
\ ul | Sottolineatura continua. \ ul0 disattiva tutte le sottolineatura. |
\ uld | Sottolineatura punteggiata. |
\ uldb | Doppia sottolineatura. |
\ ulnone | Arresta tutte le sottolineature. |
\ ulw | Sottolineatura della parola. |
\ up n | Posizione apice in mezzo punti (il valore predefinito è 6). |
\ v | Testo nascosto. |
Ricerca di testo arricchito
È possibile usare i metodi TOM per trovare testo RTF come definito da un intervallo di testo. La ricerca di testo ricco è spesso necessaria per l'elaborazione di testi, anche se non è mai stata soddisfatta in un "ciò che vedi è ciò che ottieni" (WYSIWYG) elaboratore di testi. Esiste chiaramente un dominio più ampio di corrispondenza di rich-text che consente di ignorare alcune proprietà di formattazione dei caratteri (o di includere la formattazione di paragrafo e/o il contenuto dell'oggetto), ma tali generalizzazioni sono al di là dell'ambito di questa sezione.
Uno degli scopi di questa funzionalità consiste nell'usare una finestra di dialogo Ricerca per definire il testo ricco che si desidera individuare in un documento. La finestra di dialogo verrà implementata utilizzando un controllo di modifica avanzato e i metodi TOM verranno usati per eseguire la ricerca nel documento. È possibile copiare il testo formattato desiderato dal documento nella finestra di dialogo Trova oppure inserirlo e formattarlo direttamente nella finestra di dialogo Trova .
Nell'esempio seguente viene illustrato come usare i metodi TOM per trovare testo contenente combinazioni di formattazione esatta dei caratteri. L'algoritmo cerca il testo in chiaro nella gamma di corrispondenza, denominata pr1
. Se viene trovato il testo normale, viene indicato da un intervallo di prova, denominato pr2
. Vengono quindi usati due intervalli di punti di inserimento (prip1
e prip2
) per esaminare l'intervallo di valutazione confrontando la formattazione dei caratteri con quella di pr1
. Se corrispondono esattamente, l'intervallo di input (specificato da ppr
) viene aggiornato in modo che punti al testo dell'intervallo di prova e la funzione restituisce il numero di caratteri nell'intervallo corrispondente. Due oggetti ITextFont, pf1
e pf2
, vengono usati nel confronto di formattazione dei caratteri. Sono collegati agli intervalli di punti di inserimento prip1
e 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;
}
Accessibilità TOM
TOM offre supporto per l'accessibilità tramite le interfacce di ITextSelection e ITextRange. Questa sezione descrive i metodi utili per l'accessibilità e il modo in cui un programma può determinare il x, y posizione dello schermo di un oggetto .
Poiché i programmi di accessibilità basati sull'interfaccia utente funzionano in genere con lo schermo e il mouse, un problema comune consiste nel trovare l'interfaccia corrispondente ITextDocument per la posizione corrente del mouse (nelle coordinate dello schermo). Le sezioni seguenti illustrano due modi per determinare l'interfaccia appropriata:
- Tramite la tabella degli oggetti in esecuzione
- Tramite il messaggio di EM_GETOLEINTERFACE, che funziona per le istanze di modifica avanzate finestrate, a condizione che il client si trova nello stesso spazio di processo (non è necessario effettuare il marshalling )
Per altre informazioni, vedere la specifica Microsoft Active Accessibility. Dopo aver ottenuto un oggetto da una posizione dello schermo, è possibile usare un'interfaccia ITextDocument e chiamare il metodo RangeFromPoint per ottenere un oggetto intervallo vuoto al cp corrispondente alla posizione dello schermo.
Interfaccia dalla tabella degli oggetti in esecuzione
Una tabella di oggetti in esecuzione (ROT) indica quali istanze dell'oggetto sono attive. Eseguendo una query su questa tabella, è possibile accelerare il processo di connessione di un client a un oggetto quando l'oggetto è già in esecuzione. Prima che i programmi possano accedere alle interfacce TOM tramite la tabella degli oggetti in esecuzione, un'istanza TOM con una finestra deve registrarsi in ROT usando un moniker. Si costruisce il moniker da una stringa contenente il valore esadecimale del suo HWND. Nell'esempio di codice seguente viene illustrato come eseguire questa operazione.
// 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
}
Interfaccia dei messaggi della finestra
Il messaggio EM_GETOLEINTERFACE fornisce un altro modo per ottenere un'interfaccia IUnknown per un oggetto in una determinata posizione dello schermo. Come descritto in Interface from Running Object Table, ottieni un HWND per la posizione dello schermo e quindi invii questo messaggio a tale HWND. Il messaggio EM_GETOLEINTERFACE è specifico dell'editor di testo avanzato e restituisce un puntatore a un'interfaccia IRichEditOle nella variabile gestita da lParam.
suggerimento Se viene restituito un puntatore (assicurarsi di impostare l'oggetto su cui lParam punta a Null prima di inviare il messaggio), è possibile chiamare il relativo metodo IUnknown::QueryInterface per ottenere un'interfaccia ITextDocument. L'esempio di codice seguente illustra questo approccio.
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
}
Metodi orientati all'accessibilità
Alcuni metodi TOM sono particolarmente utili per spostarsi sullo schermo, mentre altri metodi TOM migliorano ciò che si può fare quando si arriva a luoghi di interesse. Nella tabella seguente vengono descritti i metodi più utili.
Metodo | Come promuove l'accessibilità |
---|---|
OttieniSelezione | Questo metodo ottiene la selezione attiva che può essere utilizzata per diversi scopi orientati alla visualizzazione, ad esempio l'evidenziazione del testo e lo scorrimento. |
RangeFromPoint | Se usato in una selezione attiva, questo metodo viene garantito di ottenere un intervallo associato a una visualizzazione specifica. |
espandere | Ingrandisce un intervallo di testo in modo che tutte le unità parziali in esso contenute siano completamente contenute. Ad esempio, Expand(tomWindow) espande l'intervallo per includere la parte visibile della storia dell'intervallo. |
OttieniDuplicato | Se usato in una selezione attiva, questo metodo viene garantito di ottenere un intervallo associato a una visualizzazione specifica. Vedere la descrizione di RangeFromPoint. |
GetPoint | Ottiene le coordinate dello schermo per la posizione del carattere iniziale o finale nell'intervallo di testo. |
ScrollIntoView | Scorre un intervallo di testo a portata di vista. |
SetPoint | Seleziona il testo al o fino a un punto specificato. |
Insiemi di abbinamenti di caratteri
Il parametro variant dei vari metodi Move* in ITextRange, ad esempio MoveWhile e MoveUntil, può accettare una stringa esplicita o un indice a 32 bit impostato. Gli indici sono definiti da intervalli Unicode o set di caratteri GetStringTypeEx . L'intervallo Unicode a partire da n e di lunghezza l (< 32768) viene assegnato dall'indice n + (l << 16) + 0x80000000. Ad esempio, le lettere greche di base sono definite da CR_Greek = 0x805f0370 e i caratteri ASCII stampabili sono definiti da CR_ASCIIPrint = 0x805e0020. Inoltre, i metodi MoveWhile e MoveUntil consentono di ignorare rapidamente un intervallo di caratteri in qualsiasi set di caratteri GetStringTypeEx o in un intervallo di caratteri che non si trova in uno di questi set di caratteri.
I set diGetStringTypeExvengono specificati dai valori per Ctype1, Ctype2e Ctype3e sono definiti come segue.
Cset | Significato |
---|---|
Ctype1 | Combinazione di tipi di CT_CTYPE1. |
Ctype2 + tomCType2 | Qualsiasi tipo di CT_CTYPE2. |
Ctype3 + tomCType3 | Combinazione di tipi di CT_CTYPE3. |
In particolare, Ctype1 può essere qualsiasi combinazione di quanto segue.
Nome Ctype1 | Valore | Significato |
---|---|---|
C1_UPPER | 0x0001 | Maiuscolo. |
C1_LOWER | 0x0002 | Minuscolo. |
C1_DIGIT | 0x0004 | Cifre decimali. |
C1_SPACE | 0x0008 | Caratteri di spaziatura. |
C1_PUNCT | 0x0010 | Punteggiatura. |
C1_CNTRL | 0x0020 | Caratteri di controllo. |
C1_BLANK | 0x0040 | Caratteri vuoti. |
C1_XDIGIT | 0x0080 | Cifre esadecimali. |
C1_ALPHA | 0x0100 | Qualsiasi carattere linguistico (alfabetico, sillabario o ideografico). |
C1_DEFINED | 0x0200 | Carattere definito, ma non uno degli altri tipi C1_*. |
I tipi Ctype2 supportano il layout corretto del testo Unicode. Gli attributi di direzione vengono assegnati in modo che l'algoritmo di layout bidirezionale standardizzato da Unicode produa risultati accurati. Questi tipi si escludono a vicenda. Per altre informazioni sull'uso di questi attributi, vedere The Unicode Standard: Worldwide Character Encoding, Volumes 1 and 2, Addison-Wesley Publishing Company: 1991, 1992.
Nome di CType2 | Valore | Significato |
---|---|---|
Forte: | ||
C2_LEFTTORIGHT | 0x1 | Da sinistra a destra. |
C2_RIGHTTOLEFT | 0x2 | Da destra a sinistra. |
Debole: | ||
C2_EUROPENUMBER | 0x3 | Numero europeo, cifra europea. |
C2_EUROPESEPARATOR | 0x4 | Separatore numerico europeo. |
C2_EUROPETERMINATOR | 0x5 | Terminatore numerico europeo. |
C2_ARABICNUMBER | 0x6 | Numero arabo. |
C2_COMMONSEPARATOR | 0x7 | Separatore numerico comune. |
Neutrale: | ||
C2_BLOCKSEPARATOR | 0x8 | Separatore di blocco. |
C2_SEGMENTSEPARATOR | 0x9 | Separatore di segmenti. |
C2_WHITESPACE | 0xA | Spazi vuoti. |
C2_OTHERNEUTRAL | 0xB | Altri neutrali. |
Non applicabile: | ||
C2_NON_APPLICABILE | 0x0 | Nessuna direzione implicita. |
I tipi Ctype3 devono essere segnaposto per le estensioni ai tipi POSIX necessari per l'elaborazione di testo generale o per le funzioni della libreria C standard.
Nome CType3 | Valore | Significato |
---|---|---|
C3_NONSPACING | 0x1 | Contrassegno senza spaziatura. |
C3_DIACRITIC | 0x2 | Segno diacritico senza spaziatura. |
C3_VOWELMARK | 0x4 | Segno vocalico non spaziatura. |
C3_SYMBOL | 0x8 | Simbolo. |
C3_KATAKANA | 0x10 | Carattere Katakana. |
C3_HIRAGANA | 0x20 | Carattere Hiragana. |
C3_HALFWIDTH | 0x40 | Carattere a mezza larghezza. |
C3_FULLWIDTH | 0x80 | Carattere a larghezza intera. |
C3_IDEOGRAPH | 0x100 | Carattere ideografico. |
C3_KASHIDA | 0x200 | Carattere Kashida arabo. |
C3_ALPHA | 0x8000 | Tutti i caratteri linguistici (alfabetico, sillabario e ideografico). |
C3_NOTAPPLICABLE | 0x0 | Non applicabile. |
Un Edit Development Kit (EDK) può includere definizioni di indice pVar per gli intervalli seguenti descritti nello Standard Unicode.
Set di caratteri | Intervallo Unicode | Set di caratteri | Intervallo Unicode |
---|---|---|---|
ASCII | 0x0–0x7f | ANSI | 0x0—0xff |
ASCIIPrint | 0x20—0x7e | Alfabeto latino1 | 0x20—0xff |
Latin1Supp | 0xa0—0xff | LatinXA | 0x100: 0x17f |
LatinXB | 0x180—0x24f | IPAX | 0x250–0x2af |
SpaceMod | 0x2b0—0x2ff | Combinazione | 0x300—0x36f |
Greco | 0x370—0x3ff | BasicGreek | 0x370: 0x3cf |
GrecoSymbols | 0x3d0—0x3ff | Cirillico | 0x400—0x4ff |
Armeno | 0x530—0x58f | Ebraico | 0x590—0x5ff |
Ebraico di Base | 0x5d0—0x5ea | EbraicoXA | 0x590—0x5cf |
EbraicoXB | 0x5eb—0x5ff | Arabo | 0x600—0x6ff |
BasicArabic | 0x600—0x652 | AraboX | 0x653—0x6ff |
Devanagari | 0x900: 0x97f | Bangla (in precedenza Bengali) | 0x980—0x9ff |
Gurmukhi | 0xa00–0xa7f | Gujarati | 0xa80—0xaff |
Odia (in precedenza Oriya) | 0xb00—0xb7f | Tamil | 0xb80—0xbff |
Teluga | 0xc00—0xc7f | Kannada | 0xc80—0xcff |
Malayalam | 0xd00—0xd7f | Tailandese | 0xe00—0xe7f |
Laotiano/a | 0xe80—0xeff | GeorgianX | 0x10a0: 0xa0cf |
BascGeorgian | 0x10d0—0x10ff | Jamo | 0x1100: 0x11ff |
LatinXAdd | 0x1e00—0x1eff | GrecoX | 0x1f00—0x1fff |
GenPunct | 0x2000: 0x206f | Apice | 0x2070: 0x207f |
Pedice | 0x2080: 0x208f | SuperSubscript | 0x2070: 0x209f |
Valuta | 0x20a0—0x20cf | CombMarkSym | 0x20d0—0x20ff |
LetterLike | 0x2100: 0x214f | NumberForms | 0x2150: 0x218f |
Frecce | 0x2190: 0x21ff | MathOps | 0x2200: 0x22ff |
MiscTech | 0x2300: 0x23ff | CtrlPictures | 0x2400: 0x243f |
Riconoscimento Ottico dei Caratteri (OCR) | 0x2440: 0x245f | EnclAlphaNum | 0x2460- x24ff |
BoxDrawing | 0x2500–0x257f | BlockElement | 0x2580: 0x259f |
GeometShapes | 0x25a0—0x25ff | Simboli Vari | 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 | UsoPrivato | 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 |
Offerte speciali | 0xfff0—0xfffd |