XAML 中有没有办法在单个字符周围添加填充?最好在字符之前和之后。
我有一个文本框,我希望输入的间隔更大一些(因此它与背景图像对齐)。能够执行以下操作将是理想的:
有什么想法可以做到这一点吗?
看起来人们可以在 MS-Word 中做到这一点(详情请点击此处),所以希望这意味着它在 XAML 中是可能的吗?
通过使用Glyphs类,特别是Indices属性,可以在 XAML 中调整字符间距。这是一个非常低级的文本 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 将两者重叠显示,任何正值都会增加间距。“正常”间距取决于您使用的字体;正如您在“压缩”示例中看到的那样,我为不同的字符对使用了不同的间距,以使输出看起来更好。
显然,这仅适用于您正在显示的静态文本,而不是从用户那里收集的输入(在 a 中TextBox
);我不知道有什么方法可以调整“标准”文本对象(、、、等)中的字符间距TextBlock
,TextBox
所以Run
答案可能是“不,在 XAML 中没有办法做到这一点”。