Funzione ScriptItemize (usp10.h)
Suddivide una stringa Unicode in elementi singolarmente formabili.
Sintassi
HRESULT ScriptItemize(
[in] const WCHAR *pwcInChars,
[in] int cInChars,
[in] int cMaxItems,
[in, optional] const SCRIPT_CONTROL *psControl,
[in, optional] const SCRIPT_STATE *psState,
[out] SCRIPT_ITEM *pItems,
[out] int *pcItems
);
Parametri
[in] pwcInChars
Puntatore a una stringa Unicode da creare.
[in] cInChars
Numero di caratteri in pwcInChars da itemizzare.
[in] cMaxItems
Numero massimo di strutture SCRIPT_ITEM che definiscono gli elementi da elaborare.
[in, optional] psControl
Puntatore a una struttura SCRIPT_CONTROL che indica il tipo di itemization da eseguire.
In alternativa, l'applicazione può impostare questo parametro su NULL se non sono necessarie proprietà SCRIPT_CONTROL . Per altre informazioni, vedere la sezione Osservazioni.
[in, optional] psState
Puntatore a una struttura SCRIPT_STATE che indica lo stato dell'algoritmo bidirezionale iniziale.
In alternativa, l'applicazione può impostare questo parametro su NULL se lo stato dello script non è necessario. Per altre informazioni, vedere la sezione Osservazioni.
[out] pItems
Puntatore a un buffer in cui la funzione recupera SCRIPT_ITEM strutture che rappresentano gli elementi elaborati. Il buffer deve essere (cMaxItems + 1) * sizeof(SCRIPT_ITEM)
byte in lunghezza. Non è valido chiamare questa funzione con un buffer per contenere meno di due strutture SCRIPT_ITEM . La funzione aggiunge sempre un elemento terminale alla matrice di analisi dell'elemento in modo che la lunghezza dell'elemento con indice "i" in base zero sia sempre disponibile come segue:
pItems[i+1].iCharPos - pItems[i].iCharPos;
[out] pcItems
Puntatore al numero di strutture SCRIPT_ITEM elaborate.
Valore restituito
Restituisce 0 in caso di esito positivo. La funzione restituisce un valore HRESULT diverso da zero se non riesce.
La funzione restituisce E_INVALIDARG se pwcInChars è impostato su NULL, cInChars è 0, pItems è impostato su NULL o cMaxItems< 2.
La funzione restituisce E_OUTOFMEMORY se il valore di cMaxItems non è sufficiente. Come in tutti i casi di errore, nessun elemento viene completamente elaborato e nessuna parte della matrice di output contiene valori definiti. Se la funzione restituisce E_OUTOFMEMORY, l'applicazione può chiamarla di nuovo con un buffer pItems più grande.
Commenti
Per una discussione sul contesto in cui viene normalmente chiamata questa funzione, vedere Visualizzazione del testo con Uniscrivimento .
La funzione delimita gli elementi in base a una modifica del motore di forma o a una modifica della direzione.
L'applicazione può creare più intervalli o esecuzioni che rientrano interamente all'interno di un singolo elemento, da ogni struttura SCRIPT_ITEM recuperata da ScriptItemize. Tuttavia, non deve combinare più elementi in una singola esecuzione. In seguito, quando si misura o si esegue il rendering, l'applicazione può chiamare ScriptShape per ogni esecuzione e deve passare la struttura SCRIPT_ANALYSIS recuperata da ScriptItemize nella struttura SCRIPT_ITEM .
Se il testo gestito da un'applicazione può includere qualsiasi contenuto da destra a sinistra, l'applicazione usa i parametri psControl e psState nella chiamata di ScriptItemize. Tuttavia, l'applicazione non deve eseguire questa operazione e può gestire il testo bidirezionale stesso invece di basarsi su Uniscribe per farlo. I parametri psControl e psState sono utili in alcuni scenari strettamente da sinistra a destra, ad esempio quando il membro fLinkStringBefore di SCRIPT_CONTROL non è specifico degli script da destra a sinistra. L'applicazione imposta psControl e psState su NULL per avere ScriptItemize interrompere la stringa Unicode esclusivamente in base al codice carattere.
L'applicazione può impostare tutti i parametri su valori non NULL in modo che la funzione esegua un'analisi bidirezionale Unicode completa. Per consentire un'analisi bidirezionale Unicode corretta, la struttura SCRIPT_STATE deve essere inizializzata in base all'ordine di lettura all'inizio del paragrafo e ScriptItemize deve essere passata all'intero paragrafo. In particolare, il membro uBidiLevel deve essere inizializzato su 0 per sinistra a destra e 1 per destra a sinistra.
Il membro fRTL di SCRIPT_ANALYSIS viene fatto riferimento in SCRIPT_ITEM enabled="1". Il membro fNumerico di SCRIPT_PROPERTIES viene recuperato da ScriptGetProperties. Questi membri forniscono insieme la stessa classificazione del membro lpClass di GCP_RESULTS, a cui fa riferimento lpResults in GetCharacterPlacement.
Le cifre europee U+0030 a U+0039 possono essere rese come cifre nazionali, come illustrato nella tabella seguente.
SCRIPT_STATE.fDigitSubstitute | SCRIPT_CONTROL.fContextDigits | Forme cifre visualizzate per Unicode U+0030 a U+0039 |
---|---|---|
FALSE | Qualsiasi | Cifre europee |
TRUE | FALSE | Come specificato in uDefaultLanguage membro di SCRIPT_CONTROL. |
TRUE | TRUE | Come testo sicuro precedente, impostazione predefinita per il membro uDefaultLanguage di SCRIPT_CONTROL. |
In modalità cifra di contesto si verifica una delle azioni seguenti:
- Se lo script specificato da uDefaultLanguage si trova nella stessa direzione dell'output, tutte le cifre rilevate prima del rendering delle prime lettere vengono visualizzate nella lingua indicata da uDefaultLanguage.
- Se lo script specificato da uDefaultLanguage si trova nella direzione opposta dell'output, tutte le cifre rilevate prima del rendering delle prime lettere vengono eseguite in cifre europee.
Per altre informazioni, vedere Forme cifre.
I caratteri e le definizioni di controllo Unicode e i relativi effetti sui membri SCRIPT_STATE vengono forniti nella tabella seguente. Per altre informazioni sui caratteri di controllo Unicode, vedere The Unicode Standard (Lo standard Unicode).
Caratteri di controllo Unicode | Significato | Effetto sull'SCRIPT_STATE |
---|---|---|
PALLE | Eseguire l'override delle cifre europee (NODS) con forme di cifre nazionali. | Impostare fDigitSubstitute. |
ANNUISCE | Usare forme di cifra nominale, altrimenti note come cifre europee. Vedere NADS. | Cancella fDigitSubstitute. |
CULO | Attivare lo scambio di coppie simmetriche, ad esempio parentesi. Per questi caratteri, sinistra e destra vengono interpretati come apertura e chiusura. Questo è il valore predefinito. Vedere ISS. | Cancella fInhibitSymSwap. |
ISS | Inibire lo scambio di coppie simmetriche. Vedere ASS. | Impostare fInhibitSymSwap. |
AAFS | Attivare la forma araba per le forme di presentazione araba. Vedere IAFS. | Impostare fCharShape. |
IAFS | Inibire la forma araba, ovvero le legature e le connessioni curvi, per le forme di presentazione araba. I caratteri arabi nominale non sono interessati. Questo è il valore predefinito. Vedere AAFS. | Cancella fCharShape. |
Il membro fArabicNumContext di SCRIPT_STATE supporta la visualizzazione sensibile al contesto dei numeri nel testo dello script arabo. Indica se i numeri vengono sottoposti a rendering usando forme di cifre dello script arabo nativo o cifre europee. All'inizio di un paragrafo, questo membro deve normalmente essere inizializzato su TRUE per le impostazioni locali arabe o FALSE per qualsiasi altra impostazione locale. La funzione aggiorna lo stato dello script mentre elabora testo sicuro.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | usp10.h |
Libreria | Usp10.lib |
DLL | Usp10.dll |
Componente ridistribuibile | Internet Explorer 5 o versione successiva in Windows Me/98/95 |