3

XAML で個々の文字の周りにパディングを追加する方法はありますか? できれば文字の前後に。

入力をもう少し間隔を空けて配置したいテキストボックスがあります(背景画像に合わせます)。次のようなことができると理想的です。

これを達成する方法はありますか?

MS-Word (詳細はこちら) でこれを行うことができるように見えますが、それは XAML で可能であることを意味しますか?

4

1 に答える 1

3

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 は の現在の文字に対応するグリフを使用しますUnicodeStringoffは、このグリフと次のグリフの間の間隔です。0 は 2 つを重ねて表示し、正の値は間隔を広げます。「通常の」間隔は、使用しているフォントによって異なります。「Condensed」の例でわかるように、出力の見栄えを良くするために、文字のペアごとに異なる間隔を使用しました。

明らかに、これは表示している静的テキストにのみ適用され、ユーザーから収集された入力 (a TextBox) には適用されません。TextBlock「標準」のテキスト オブジェクト ( 、TextBox、など)の文字間隔を調整する方法を知らないRunので、おそらく答えは「いいえ、XAML でこれを行う方法はありません」です。

于 2010-01-22T16:34:27.697 に答える