Настройка межсимвольного интервала возможна в XAML с помощью класса Glyphs , в частности, свойства Indices . Это довольно низкоуровневый текстовый API, поэтому вы должны указать URI шрифта (а не фамилию), и вам нужно самостоятельно рассчитать все расстояния.
Следующий XAML использует Glyph.Indices для применения межсимвольного интервала:
<Glyphs UnicodeString="Expanded" Indices=",100;,100;,100;,100;,100;,100;,100"
FontUri="file://c:/windows/fonts/arial.ttf"
Fill="Black" FontRenderingEmSize="24" />
<Glyphs UnicodeString="Normal"
FontUri="file://c:/windows/fonts/arial.ttf"
Fill="Black" FontRenderingEmSize="24" />
<Glyphs UnicodeString="Condensed" Indices=",60;,50;,50;,50;,45;,50;,40;,45"
FontUri="file://c:/windows/fonts/arial.ttf"
Fill="Black" FontRenderingEmSize="24" />
Как указано здесь , свойство Indices содержит разделенный точкой с запятой список chr,off
пар. chr
- индекс глифа внутри шрифта; если опущено, WPF будет использовать глиф, соответствующий текущему символу в UnicodeString
. off
- интервал между этим глифом и следующим; 0 отображает два поверх друг друга, любое положительное значение увеличивает интервал. «Нормальный» интервал будет зависеть от используемого вами шрифта; как вы можете видеть в примере «Сжатый», я использовал разные интервалы для разных пар символов, чтобы вывод выглядел лучше.
Очевидно, что это относится только к статическому тексту, который вы отображаете, а не к вводу, полученному от пользователя (в TextBox
); Я не знаю ни одного способа отрегулировать межсимвольный интервал в «стандартных» текстовых объектах (TextBlock
, TextBox
, Run
и т. Д.), Поэтому, возможно, ответ «Нет, нет способ сделать это в XAML ".