SCRIPT_PROPERTIES structure (usp10.h)
Contient des informations sur le traitement spécial pour chaque script.
Syntaxe
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;
Membres
langid
Identificateur de langue pour la langue associée au script. Lorsqu’un script est utilisé pour de nombreuses langues, ce membre représente une langue par défaut. Par exemple, le script occidental est représenté par LANG_ENGLISH bien qu’il soit également utilisé pour les Français, l’allemand et d’autres langues européennes.
fNumeric
Valeur indiquant si un script contient uniquement des chiffres et les autres caractères utilisés pour écrire des nombres par les règles de l’algorithme bidirectionnel Unicode. Par exemple, les symboles monétaires, le séparateur de milliers et la virgule décimale sont classés comme numériques lorsqu’ils sont adjacents à ou entre les chiffres. Les valeurs possibles pour ce membre sont définies dans le tableau suivant.
fComplex
Valeur indiquant un script complexe pour une langue qui nécessite une mise en forme ou une disposition spéciale. Les valeurs possibles sont définies dans le tableau suivant.
fNeedsWordBreaking
Valeur indiquant le type de placement des sauts lexicaux pour une langue. Les valeurs possibles sont définies dans le tableau suivant.
Valeur | Signification |
---|---|
|
La langue a un placement de sauts lexicaux qui nécessite que l’application appelle ScriptBreak et qui inclut des positions de caractères marquées par le membre fWordStop dans SCRIPT_LOGATTR. |
|
Word placement d’arrêt est identifié en recherchant les caractères marqués par le membre fWhiteSpace dans SCRIPT_LOGATTR, ou pour les glyphes marqués par la valeur SCRIPT_JUSTIFY_BLANK ou SCRIPT_JUSTIFY_ARABIC_BLANK pour le membre uJustification de SCRIPT_VISATTR. |
fNeedsCaretInfo
Valeur indiquant si une langue, par exemple le thaï ou l’indien, limite l’emplacement de l’insertion aux limites du cluster. Les valeurs possibles sont définies dans le tableau suivant. Pour déterminer les positions d’insertion valides, l’application inspecte la valeur fCharStop dans les attributs logiques récupérés par ScriptBreak, ou compare les valeurs adjacentes dans le tableau pwLogClust récupérées par ScriptShape.
Valeur | Signification |
---|---|
|
La langue limite le placement de l’insertion aux limites du cluster. |
|
La langue ne limite pas l’emplacement d’insertion aux limites du cluster. |
bCharSet
Jeu de caractères nominal associé au script. Lors de la création d’une police adaptée à l’affichage du script, ce jeu de caractères peut être utilisé comme valeur du membre lfCharSet de LOGFONT.
Pour un nouveau script sans jeu de caractères défini, l’application doit généralement définir bCharSet sur DEFAULT_CHARSET. Consultez la description du membre fAmbiguousCharSet.
fControl
Valeur indiquant si seuls les caractères de contrôle sont utilisés dans le script. Les valeurs possibles sont définies dans le tableau suivant. Notez que chaque caractère de contrôle ne se retrouve pas dans une structure SCRIPT_CONTROL .
Valeur | Signification |
---|---|
|
Définissez uniquement les caractères de contrôle dans le script. |
|
Ne définissez pas uniquement les caractères de contrôle dans le script. |
fPrivateUseArea
Valeur indiquant l’utilisation d’une zone d’utilisation privée, un ensemble spécial de caractères qui est défini en privé pour la plage Unicode U+E000 à U+F8FF. Les valeurs possibles sont définies dans le tableau suivant.
Valeur | Signification |
---|---|
|
Utilisez une zone d’utilisation privée. |
|
N’utilisez pas de zone d’utilisation privée. |
fNeedsCharacterJustify
Valeur indiquant la gestion de la justification du script en augmentant tous les espaces entre les lettres, pas seulement les espaces entre les mots. Les valeurs possibles sont définies dans le tableau suivant. Lors de la justification inter-caractères, Uniscribe insère un espace supplémentaire uniquement après les glyphes marqués avec la valeur SCRIPT_JUSTIFY_CHARACTER pour le membre uJustification de SCRIPT_VISATTR.
Valeur | Signification |
---|---|
|
Utilisez la justification des caractères. |
|
N’utilisez pas la justification des caractères. |
fInvalidGlyph
Valeur indiquant si ScriptShape génère un glyphe non valide pour qu’un script représente des séquences non valides. Les valeurs possibles sont définies dans le tableau suivant. L’application peut obtenir l’index de glyphe du glyphe non valide pour une police particulière en appelant ScriptGetFontProperties.
Valeur | Signification |
---|---|
|
Générez un glyphe non valide pour représenter des séquences non valides. |
|
Ne générez pas de glyphe non valide pour représenter des séquences non valides. |
fInvalidLogAttr
Valeur indiquant si ScriptBreak marque des combinaisons non valides pour un script en définissant fInvalid dans la mémoire tampon des attributs logiques. Les valeurs possibles sont définies dans le tableau suivant.
Valeur | Signification |
---|---|
|
Marquer des combinaisons non valides pour le script. |
|
Ne marquez pas les combinaisons non valides pour le script. |
fCDM
Valeur indiquant si un script contient un élément qui a été analysé par ScriptItemize comme incluant la combinaison de marques diacritiques (U+0300 à U+36F). Les valeurs possibles sont définies dans le tableau suivant.
Valeur | Signification |
---|---|
|
Le script contient un élément qui inclut la combinaison de marques diacritiques. |
|
Le script ne contient pas d’élément qui inclut la combinaison de marques diacritiques. |
fAmbiguousCharSet
Valeur indiquant si un script contient des caractères pris en charge par plusieurs ensembles de caractères. Les valeurs possibles sont définies dans le tableau suivant.
Valeur | Signification |
---|---|
|
Le script contient des caractères pris en charge par plusieurs ensembles de caractères. Dans ce cas, le membre bCharSet de cette structure doit être ignoré et le membre lfCharSet de LOGFONT doit être défini sur DEFAULT_CHARSET. Pour plus d'informations, consultez la section Notes. |
|
Le script ne contient pas de caractères pris en charge par plusieurs ensembles de caractères. |
fClusterSizeVaries
Valeur indiquant si un script, tel que l’arabe, peut utiliser une mise en forme contextuelle qui entraîne une augmentation de la taille d’une chaîne lors de la suppression de caractères. Les valeurs possibles sont définies dans le tableau suivant.
Valeur | Signification |
---|---|
|
Utilisez une taille de cluster variable pour la mise en forme contextuelle. |
|
N’utilisez pas de taille de cluster variable pour la mise en forme contextuelle. |
fRejectInvalid
Valeur indiquant si un script, par exemple Thaï, doit rejeter les séquences non valides qui font traditionnellement en sorte qu’un programme d’éditeur, tel que le Bloc-notes, bip et ignore les frappes. Les valeurs possibles sont définies dans le tableau suivant.
Valeur | Signification |
---|---|
|
Rejeter les séquences non valides. |
|
Ne rejetez pas les séquences non valides. |
Remarques
Cette structure est remplie par la fonction ScriptGetProperties .
De nombreux scripts Uniscribe ne correspondent pas directement aux jeux de caractères 8 bits. Lorsque certains caractères d’un script sont pris en charge par plusieurs jeux de caractères, le membre fAmbiguousCharSet est défini. L’application doit effectuer un traitement supplémentaire pour déterminer le jeu de caractères à utiliser lors de la demande d’une police adaptée à l’exécution. Par exemple, il peut déterminer que l’exécution se compose de plusieurs langues et fractionner l’exécution afin qu’une police différente soit utilisée pour chaque langue.
L’application utilise le code suivant lors de l’initialisation pour obtenir un pointeur vers le tableau SCRIPT_PROPERTIES .
const SCRIPT_PROPERTIES **ppScriptProperties; // Array of pointers
// to properties
int iMaxScript;
HRESULT hr;
hr = ScriptGetProperties(&ppScriptProperties, &iMaxScript);
Ensuite, l’application peut inspecter les propriétés du script d’un élément, comme illustré dans l’exemple suivant.
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).
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
En-tête | usp10.h |