Partager via


Guide pratique pour utiliser la liaison de police dans les contrôles d’édition enrichi

Microsoft Rich Edit 3.0 affecte un jeu de caractères à des caractères de texte brut en fonction de leur contexte. Quelques exemples :

  • Les caractères grecs sont affectés GREEK_CHARSET.
  • Les symboles hangûls sont affectés HANGUL_CHARSET.
  • Les caractères chinois sont affectés SHIFTJIS_CHARSET si des caractères kana sont trouvés à proximité, ou GB2312_CHARSET si aucun kana n’est trouvé à proximité.
  • Les caractères ANSI non neutres sont affectés ANSI_CHARSET dans tous les cas.

Notes

Le contrôle d’édition enrichi utilise Unicode en interne, de sorte que cette utilisation des jeux de caractères diffère de celle d’origine utilisée dans les spécifications de police. Toutefois, la structure CHARFORMAT a une place bien définie pour le jeu de caractères.

 

Un jeu de caractères neutres comme les blancs et les chiffres est attribué en fonction de leur contexte. Par exemple, un vide entouré de caractères du même jeu de caractères obtient ce jeu de caractères. Les jeux de caractères neutres et les chiffres utilisés pour le texte bidirectionnel sont attribués d’une manière basée sur l’algorithme bidirectionnel Unicode.

Bon à savoir

Technologies

Prérequis

  • C/C++
  • Programmation de l’interface utilisateur Windows

Instructions

Utiliser la liaison de polices dans un contrôle d’édition enrichi

Une fois les jeux de caractères attribués, Rich Edit analyse le texte autour du point d’insertion vers l’avant et vers l’arrière pour rechercher les polices les plus proches qui ont été utilisées pour les jeux de caractères. Si aucune police n’est trouvée pour un jeu de caractères, Rich Edit utilise la police choisie par le client pour ce jeu de caractères. Si le client n’a pas spécifié de police pour le jeu de caractères, Rich Edit utilise la police par défaut pour ce jeu de caractères. Si le client souhaite une autre police, il peut toujours la modifier, mais cette approche fonctionne la plupart du temps. Les choix de police par défaut actuels sont basés sur le tableau suivant. Notez que les polices par défaut sont définies par processus et qu’il existe des listes distinctes pour l’utilisation de l’interface utilisateur et pour l’utilisation hors interface utilisateur.

Langue Nom de la police de l’interface utilisateur Taille de police de l’interface utilisateur nom de police non-interface utilisateur taille de police non-interface utilisateur
Western, CE, ME, Vietnamien Tahoma 8 Arial 10
Japonais MS UI Gothic 9 MS P Gothic 10
Coréen Gulim 9 Gulim 9
Chinois simplifié Simsun 9 SimSun 10
Chinois traditionnel PMingLiU 9 PMingLiU 9
Thaï MS Sans Serif 8 Tahoma 14
symboles Wingdings 8 Wingdings 10
Dévanâgarî Mangal 8 Mangal 10
Tamoul Lamaison 8 Lamaison 10
Géorgien, arménien Arial Unicode 8 Arial Unicode 10

 

Par conséquent, dans la table de liaison de polices par défaut (les entrées ont un jeu de caractères, un nom de police et une taille), Rich Edit permet à ANSI_CHARSET de faire correspondre plusieurs jeux de caractères, tandis que le jeu de caractères approprié correspond à d’autres polices sur une base un-à-un. Plus précisément, l’édition enrichie utilise le choix ANSI_CHARSET chaque fois qu’aucune autre alternative n’est trouvée. Vous serez en mesure de spécifier une granularité plus fine que celle-ci; par exemple, affectez une ARABIC_CHARSET spécifique pour les exécutions arabes, une police grecque spécifique pour les exécutions grecques, etc. Cette granularité plus fine sera également utilisée si une police avec le tampon de jeu de caractères souhaité se trouve quelque part dans le document avant la zone qui est liée à la police.

Notez que Rich Edit ne gère pas actuellement un glyphe manquant dans une police qui prétend prendre en charge un jeu de caractères, mais qui est incomplète. Au moment de l’affichage dans un script complexe, Rich Edit finit par savoir qu’un tel glyphe est manquant, mais cela n’entraîne pas l’utilisation d’une nouvelle police par le magasin de stockage. Normalement, la liaison de polices sous-jacente du système d’exploitation effectue cette opération.

Notes

Rich Edit 4.1 : Pour définir la police par défaut d’un script, appelez EM_SETCHARFORMAT avec CHARFORMAT2, en spécifiant des valeurs pour les membres yHeight, bCharSet, bPitchAndFamily, szFaceName et lcid . En outre, pour obtenir la police par défaut d’une page de codes spécifique, appelez EM_GETCHARFORMAT avec CHARFORMAT2, en spécifiant des valeurs pour les membres bCharSet et lcid .

Utilisation de contrôles d’édition enrichie

Démonstration des contrôles communs Windows (CppWindowsCommonControls)