struttura SCRIPT_PROPERTIES (usp10.h)
Contiene informazioni sull'elaborazione speciale per ogni script.
Sintassi
typedef struct {
DWORD langid : 16;
DWORD fNumeric : 1;
DWORD fComplex : 1;
DWORD fNeedsWordBreaking : 1;
DWORD fNeedsCaretInfo : 1;
DWORD bCharSet : 8;
DWORD fControl : 1;
DWORD fPrivateUseArea : 1;
DWORD fNeedsCharacterJustify : 1;
DWORD fInvalidGlyph : 1;
DWORD fInvalidLogAttr : 1;
DWORD fCDM : 1;
DWORD fAmbiguousCharSet : 1;
DWORD fClusterSizeVaries : 1;
DWORD fRejectInvalid : 1;
} SCRIPT_PROPERTIES;
Members
langid
Identificatore di lingua per la lingua associata allo script. Quando uno script viene usato per molte lingue, questo membro rappresenta una lingua predefinita. Ad esempio, lo script occidentale è rappresentato da LANG_ENGLISH anche se viene usato anche per francese, tedesco e altre lingue europee.
fNumeric
Valore che indica se uno script contiene solo cifre e gli altri caratteri utilizzati per scrivere numeri dalle regole dell'algoritmo bidirezionale Unicode. Ad esempio, i simboli di valuta, il separatore delle migliaia e il separatore decimale vengono classificati come numerici quando sono adiacenti a o tra cifre. I valori possibili per questo membro sono definiti nella tabella seguente.
fComplex
Valore che indica uno script complesso per un linguaggio che richiede una forma o un layout speciali. I valori possibili sono definiti nella tabella seguente.
Valore | Significato |
---|---|
|
Lo script richiede una forma o un layout speciali. |
|
Lo script non contiene caratteri di combinazione e non richiede alcuna modellazione contestuale o riordinamento. |
fNeedsWordBreaking
Valore che indica il tipo di posizionamento dell'interruzione di parola per una lingua. I valori possibili sono definiti nella tabella seguente.
Valore | Significato |
---|---|
|
Il linguaggio ha una posizione di interruzione di parola che richiede all'applicazione di chiamare ScriptBreak e che include le posizioni dei caratteri contrassegnate dal membro fWordStop in SCRIPT_LOGATTR. |
|
Word posizionamento dell'interruzione viene identificato analizzando i caratteri contrassegnati dal membro fWhiteSpace in SCRIPT_LOGATTR o per i glifi contrassegnati dal valore SCRIPT_JUSTIFY_BLANK o SCRIPT_JUSTIFY_ARABIC_BLANK per il membro uJustification di SCRIPT_VISATTR. |
fNeedsCaretInfo
Valore che indica se una lingua, ad esempio Thai o Indiano, limita il posizionamento del cursore ai limiti del cluster. I valori possibili sono definiti nella tabella seguente. Per determinare le posizioni valide del cursore, l'applicazione controlla il valore fCharStop negli attributi logici recuperati da ScriptBreak o confronta i valori adiacenti nella matrice pwLogClust recuperata da ScriptShape.
Valore | Significato |
---|---|
|
Il linguaggio limita il posizionamento del cursore ai limiti del cluster. |
|
Il linguaggio non limita il posizionamento del cursore ai limiti del cluster. |
bCharSet
Set di caratteri nominale associato allo script. Durante la creazione di un tipo di carattere adatto per la visualizzazione dello script, questo set di caratteri può essere usato come valore del membro lfCharSet di LOGFONT.
Per un nuovo script senza set di caratteri definito, l'applicazione deve in genere impostare bCharSet su DEFAULT_CHARSET. Vedere la descrizione del membro fAmbiguousCharSet.
fControl
Valore che indica se nello script vengono utilizzati solo i caratteri di controllo. I valori possibili sono definiti nella tabella seguente. Si noti che ogni carattere di controllo non termina in una struttura SCRIPT_CONTROL .
Valore | Significato |
---|---|
|
Impostare solo i caratteri di controllo nello script. |
|
Non impostare solo i caratteri di controllo nello script. |
fPrivateUseArea
Valore che indica l'uso di un'area di utilizzo privato, un set speciale di caratteri definito privatamente per l'intervallo Unicode da U+E000 a U+F8FF. I valori possibili sono definiti nella tabella seguente.
Valore | Significato |
---|---|
|
Usare un'area di utilizzo privata. |
|
Non usare un'area di utilizzo privato. |
fNeedsCharacterJustify
Valore che indica la gestione della giustificazione per lo script aumentando tutti gli spazi tra lettere, non solo gli spazi tra le parole. I valori possibili sono definiti nella tabella seguente. Quando si esegue una giustificazione tra caratteri, Uniscribe inserisce spazio aggiuntivo solo dopo i glifi contrassegnati con il valore SCRIPT_JUSTIFY_CHARACTER per il membro uJustification di SCRIPT_VISATTR.
Valore | Significato |
---|---|
|
Usare la giustificazione dei caratteri. |
|
Non usare la giustificazione dei caratteri. |
fInvalidGlyph
Valore che indica se ScriptShape genera un glifo non valido per uno script per rappresentare sequenze non valide. I valori possibili sono definiti nella tabella seguente. L'applicazione può ottenere l'indice del glifo non valido per un tipo di carattere specifico chiamando ScriptGetFontProperties.
Valore | Significato |
---|---|
|
Generare un glifo non valido per rappresentare sequenze non valide. |
|
Non generare un glifo non valido per rappresentare sequenze non valide. |
fInvalidLogAttr
Valore che indica se ScriptBreak contrassegna combinazioni non valide per uno script impostando fInvalid nel buffer degli attributi logici. I valori possibili sono definiti nella tabella seguente.
Valore | Significato |
---|---|
|
Contrassegnare le combinazioni non valide per lo script. |
|
Non contrassegnare combinazioni non valide per lo script. |
fCDM
Valore che indica se uno script contiene un elemento analizzato da ScriptItemize , inclusa la combinazione di segni diacritici (da U+0300 a U+36F). I valori possibili sono definiti nella tabella seguente.
Valore | Significato |
---|---|
|
Lo script contiene un elemento che include la combinazione di segni diacritici. |
|
Lo script non contiene un elemento che include la combinazione di segni diacritici. |
fAmbiguousCharSet
Valore che indica se uno script contiene caratteri supportati da più set di caratteri. I valori possibili sono definiti nella tabella seguente.
Valore | Significato |
---|---|
|
Lo script contiene caratteri supportati da più di un set di caratteri. In questo caso, il membro bCharSet di questa struttura deve essere ignorato e il membro lfCharSet di LOGFONT deve essere impostato su DEFAULT_CHARSET. Per altre informazioni, vedere la sezione Osservazioni. |
|
Lo script non contiene caratteri supportati da più set di caratteri. |
fClusterSizeVaries
Valore che indica se uno script, ad esempio l'arabo, può usare la forma contestuale che causa un aumento della dimensione di una stringa durante la rimozione dei caratteri. I valori possibili sono definiti nella tabella seguente.
Valore | Significato |
---|---|
|
Usare una dimensione del cluster variabile per la forma contestuale. |
|
Non usare una dimensione del cluster variabile per la modellazione contestuale. |
fRejectInvalid
Valore che indica se uno script, ad esempio, Thai, deve rifiutare sequenze non valide che causano in modo convenzionale un programma di editor, ad esempio Blocco note, per generare e ignorare le sequenze di tasti. I valori possibili sono definiti nella tabella seguente.
Valore | Significato |
---|---|
|
Rifiutare sequenze non valide. |
|
Non rifiutare sequenze non valide. |
Commenti
Questa struttura viene riempita dalla funzione ScriptGetProperties .
Molti script Uniscribe non corrispondono direttamente a set di caratteri a 8 bit. Quando alcuni dei caratteri in uno script sono supportati da più di un set di caratteri, il membro fAmbiguousCharSet è impostato. L'applicazione deve eseguire ulteriori elaborazioni per determinare il set di caratteri da usare quando si richiede un tipo di carattere adatto per l'esecuzione. Ad esempio, potrebbe determinare che l'esecuzione è costituita da più lingue e suddividere l'esecuzione in modo che venga usato un carattere diverso per ogni lingua.
L'applicazione usa il codice seguente durante l'inizializzazione per ottenere un puntatore alla matrice di SCRIPT_PROPERTIES .
const SCRIPT_PROPERTIES **ppScriptProperties; // Array of pointers
// to properties
int iMaxScript;
HRESULT hr;
hr = ScriptGetProperties(&ppScriptProperties, &iMaxScript);
L'applicazione può quindi esaminare le proprietà dello script di un elemento, come illustrato nell'esempio successivo.
hr = ScriptItemize(pwcInChars, cInChars, cMaxItems, psControl, psState, pItems, pcItems);
//...
if (ppScriptProperties[pItems[iItem].a.eScript]->fNeedsCaretInfo)
{
// Use ScriptBreak to restrict the caret from entering clusters (for example).
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Intestazione | usp10.h |