WPF`Galphs`没有像`TextBlock`那样正确地呈现文本

我正在使用Glyphs元素制作WPF文本编辑器。 我有一个问题,如图中所示,文本绘制不正确,我该如何解决这个问题?

在此处输入图像描述

有两个问题:

  1. 字母之间的字距。
  2. 字母和变音符号之间的字距。

我通过GetKerningPairs函数解决了第一个问题。

我该如何解决这个问题,也许我错了?

                    

TrueType字体中不存在用于变音符号的字距调整,因此您必须为变音符号定义自己的对列表,并给出相应的字距调整。 在大多数字母中,变音符号是居中的,而其他字母则位于右侧。 显然文本块执行上述操作。

正如@Codedom所说,你必须定义自己的列表,它可能如下所示:

 class Program { static void Main(string[] 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, }