WPF "глифы" не рендеринг текста правильно, как " TextBlock`
2 ответов
Кернинг для диакритики не существует в шрифтах TrueType, Поэтому вы должны определить свой собственный список пар для диакритики и дать соответствующее Кернинг. В большинстве писем диакритика центрирована, а в других-с правой стороны. По-видимому, текстовый блок делает вышеизложенное.
Как сказал @Codedom, вы должны определить свой собственный список, который может выглядеть так:
class Program
{
static void Main(string[] args)
{
var list = new List<DiacriticsKerning>();
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, }