Как указать интервал между буквами или Кернинг в текстовом поле WPF?

Я хотел бы изменить интервал между символами в текстовом поле WPF.
Что-то вроде letter-spacing: 5px вещь, которая доступна в CSS.
Я думаю, что это возможно в XAML; какой самый простой способ?

я нашел "введение в объект GlyphRun и элемент глифы

3 ответов


я попробовал глифы и FontStretch и не мог легко получить результат, который я искал. Я смог придумать подход, который работает для моих целей. Может быть, это сработает и для других.

<ItemsControl ItemsSource="{Binding SomeString}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" 
                       Margin="0,0,5,0"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Я могу привязаться к любой строке и не нужно делать никакого определения ширины символа, чтобы правильно установить интервал. Правое поле-это пробел между буквы.

пример:

Kerning


is FontStretch вариант для вас?

в противном случае вы можете посмотреть в этой есть изображение, показывающее, что означает предварительная ширина. Хотя я не делал этого раньше и не знаю, работает ли это увеличение правого и левого боковых подшипников может быть тем, что вы хотите!


для чего это стоит . . .

Если у вас есть возможность переключить реализацию на RichTextBox, это может быть проще, чем работа вокруг вы нашли сентябрь 2013. Я просто попробовал это для своих нужд, и это работает для того, что мне нужно. Я не вижу способа с RichTextBox контролировать Кернинг отдельных пространств, как это делают наборщики. Но TextBox съедал дополнительные пространства (консолидируя несколько смежных пространств в одно пространство), такие как HTML. Мне нужно было, чтобы пробелы отображали тот же интервал, что и в моей текстовой строке, и RichTextBox делает это.

<RichTextBox x:Name="MyRichTextBox"></RichTextBox>

Я не эксперт, но, похоже, вы не можете указать текстовое содержимое в XAML. Я должен был указать его в событии с кодом:

this.MyRichTextBox.AppendText("V A R I E D      S P A C E S");