Как я могу указать расстояние между буквами или кернинг в текстовом поле WPF?
Вопрос
Я хотел бы изменить расстояние между символами в текстовом поле WPF.
Что -то вроде letter-spacing: 5px
вещь, которая доступна в CSS.
Я думаю, что это возможно в 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"
/>
Та же страница документации дает это «объяснение» для того, что Indices
недвижимость делает:
Я понятия не имею, что это значит. Я также не уверен, что индексы - это правильная вещь - комментарий в коде говорит о «ширине символов», о котором мне не волнует. Я хочу настроить ширину между персонажи.
Кроме того, нет примера для применения 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>
Я могу привязать к любой строке и не должен делать какую -либо обнаружение ширины символов, чтобы правильно установить расстояние. Правильный край - это пространство между письма.
Пример:
Другие советы
является 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");