如何在WPF文本框中指定字母间距或字距?

如何在WPF文本框中指定字母间距或字距?,wpf,xaml,textbox,kerning,Wpf,Xaml,Textbox,Kerning,我想修改WPF文本框中字符之间的间距。 类似于CSS中可用的字母间距:5px的东西。 我认为这在XAML中是可能的;最简单的方法是什么 我找到了“”文档,发现它毫无用处 这是该页面中的代码示例: <!-- "Hello World!" with explicit character widths for proportional font --> <Glyphs FontUri = "C:\WINDOWS\Fonts\ARIAL.TTF"

我想修改WPF文本框中字符之间的间距。
类似于CSS中可用的
字母间距:5px
的东西。
我认为这在XAML中是可能的;最简单的方法是什么

我找到了“”文档,发现它毫无用处

这是该页面中的代码示例:

<!-- "Hello World!" with explicit character widths for proportional font -->
<Glyphs 
   FontUri             = "C:\WINDOWS\Fonts\ARIAL.TTF"
   FontRenderingEmSize = "36"
   UnicodeString       = "Hello World!"
   Indices             = ",80;,80;,80;,80;,80;,80;,80;,80;,80;,80;,80"
   Fill                = "Maroon"
   OriginX             = "50"
   OriginY             = "225"
/>

同一文档页对
索引
属性的功能进行了“解释”:

我不知道这是什么意思。我也不确定索引是否正确——代码中的注释提到了我不关心的“字符宽度”。我想调整字符之间的宽度

此外,没有示例说明如何将
Glyphs
元素应用于文本框。当我尝试它时,我的WPF测试应用程序崩溃了


我想做的是稍微增加WPF文本框中绘制字符之间的空白。文本的长度和内容各不相同。每次有新字符时,是否必须修改
Indicies
属性?有没有一种方式可以说“让每个角色的空间比平时多20%”

有人能帮我吗

是您的选择吗


否则,您可能需要查看图像,显示前进宽度的含义。虽然我以前没有这样做过,也不知道这是否有效,但增加右侧和左侧轴承可能是您想要的

我尝试了Glyphs和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>

我可以绑定到任何字符串,不需要进行任何字符宽度检测来正确设置间距。右边距是字母之间的空格

例如:


为了它的价值

如果您可以选择将实现切换到RichTextBox,这可能比您在2013年9月发现的工作更容易。我只是为了我自己的需要而尝试它,它能满足我的需要。我不认为RichTextBox可以像排字机那样控制单个空格的紧排。但TextBox占用了额外的空间(将多个相邻空间合并为一个空间),比如HTML。我需要让空格显示与文本字符串相同的间距,RichTextBox就是这样做的

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

这是一个很好的解决方案(我投了赞成票),但这肯定会导致性能问题。我们在某些地方使用此解决方案,但我们希望在包含数百项的
ItemsControl
中使用此解决方案,这会增加渲染时间的几秒钟。在这些场景中,我们回到了常规的
TextBlock
。因此,请注意/小心!这也将破坏修剪或换行文本的功能。
this.MyRichTextBox.AppendText("V A R I E D      S P A C E S");