XAML 中有没有办法在单个字符周围添加填充?最好是在角色之前和之后。

我有一个文本框,我希望输入的间隔更大一些(以便它与背景图像对齐)。能够做类似的事情将是理想的:

有什么想法可以实现这一目标吗?

看起来可以在 MS-Word 中做到这一点(详细信息 这里),所以希望这意味着它可以在 XAML 中实现吗?

有帮助吗?

解决方案

通过使用 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 将两个显示在彼此之上,任何正值都会增加间距。“正常”间距取决于您使用的字体;正如您在“Condensed”示例中看到的,我对不同的字符对使用了不同的间距,以使输出看起来更好。

显然,这仅适用于您正在显示的静态文本,而不适用于从用户收集的输入(以 TextBox);我不知道有什么方法可以调整“标准”文本对象中的字符间距(TextBlock, TextBox, Run, 等),所以答案可能是“不,在 XAML 中没有办法做到这一点”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top