Partager via


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.

Valeur Signification
TRUE
Le 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.
FALSE
Le script ne contient pas uniquement des chiffres et les autres caractères utilisés pour écrire des nombres par les règles de l’algorithme bidirectionnel Unicode.

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.

Valeur Signification
TRUE
Le script nécessite une mise en forme ou une disposition spéciale.
FALSE
Le script ne contient pas de caractères combinés et ne nécessite aucune mise en forme ou réorganisation contextuelle.

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
TRUE
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.
FALSE
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.

RemarqueScriptXtoCP et ScriptCPtoX appliquent automatiquement des restrictions de placement d’insertion.
 
Valeur Signification
TRUE
La langue limite le placement de l’insertion aux limites du cluster.
FALSE
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
TRUE
Définissez uniquement les caractères de contrôle dans le script.
FALSE
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
TRUE
Utilisez une zone d’utilisation privée.
FALSE
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
TRUE
Utilisez la justification des caractères.
FALSE
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
TRUE
Générez un glyphe non valide pour représenter des séquences non valides.
FALSE
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
TRUE
Marquer des combinaisons non valides pour le script.
FALSE
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
TRUE
Le script contient un élément qui inclut la combinaison de marques diacritiques.
FALSE
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
TRUE
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.
FALSE
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
TRUE
Utilisez une taille de cluster variable pour la mise en forme contextuelle.
FALSE
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
TRUE
Rejeter les séquences non valides.
FALSE
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

Voir aussi

Identificateurs de langue

SCRIPT_CONTROL

SCRIPT_LOGATTR

SCRIPT_VISATTR

ScriptBreak

ScriptCPtoX

ScriptGetFontProperties

ScriptGetProperties

ScriptItemize

ScriptShape

ScriptXtoCP

Uniscribe

Structures uniscribes