WPF `Glyphs` ne rendant pas le texte correctement comme` TextBlock`

Je crée un éditeur de texte WPF en utilisant l’élément Glyphs . Et j’ai un problème avec le fait que le texte n’est pas dessiné correctement, comme vous pouvez le voir sur l’image, comment puis-je résoudre ce problème?

entrez la description de l'image ici

Il y a deux problèmes:

  1. Crénage entre les lettres.
  2. Crénage entre lettres et signes diacritiques.

Le premier problème que j’ai résolu par la fonction GetKerningPairs .

Comment puis-je résoudre ce problème, peut-être que je me trompe?

                    

Le crénage pour les signes diacritiques n’existe pas dans les fonts TrueType. Vous devez donc définir votre propre liste de paires pour les signes diacritiques et donner le crénage correspondant. Dans la plupart des lettres, les signes diacritiques sont centrés et dans les autres à droite. Apparemment, Text Block fait ce qui précède.

Comme @Codedom a dit que vous devez définir votre propre liste, qui pourrait ressembler à ceci:

 class Program { static void Main(ssortingng[] args) { var list = new List(); list.Add(new DiacriticsKerning('א', 'ָ', HorizontalAlignment.Center, VerticalAlignment.None)); list.Add(new DiacriticsKerning('ב', 'ָ', HorizontalAlignment.Center, VerticalAlignment.None)); list.Add(new DiacriticsKerning('ג', 'ָ', HorizontalAlignment.Center, VerticalAlignment.None)); list.Add(new DiacriticsKerning('ד', 'ָ', HorizontalAlignment.Right, VerticalAlignment.None)); list.Add(new DiacriticsKerning('ה', 'ָ', HorizontalAlignment.Center, VerticalAlignment.None)); list.Add(new DiacriticsKerning('ו', 'ָ', HorizontalAlignment.Center, VerticalAlignment.None)); // ... } } struct DiacriticsKerning { public DiacriticsKerning(char letter, char diacritics, HorizontalAlignment alignmentHorizontal, VerticalAlignment alignmentVertical) { Letters = letter; Diacritics = diacritics; HorizontalAlignment = alignmentHorizontal; VerticalAlignment = alignmentVertical; } char Letters; char Diacritics; HorizontalAlignment HorizontalAlignment; VerticalAlignment VerticalAlignment; } enum HorizontalAlignment { None, Center, Left, Right, } enum VerticalAlignment { None, Center, Left, Right, }