BackStory
Я пытался использовать внешний шрифт в своем приложении WPF и упаковать его с моим приложением.
Мне удалось использовать шрифт OpenSans , используя указанную процедуру в этом ответе ( PackagingFontWithApplication )
Я сделал следующее:
- Я добавил папку "OpenSans" в приложение Ресурсы forlder с 3 .ttf файлами внутри
![List item](https://i.stack.imgur.com/Ix235.png)
- Я добавил это семейство шрифтов в мой файл
app.xaml
, например:
<FontFamily x:Key="OpenSansFont">pack://application:,,,/MyApp;component/Resources/OpenSans/#Open Sans</FontFamily>
Использование: В каждом окне я мог бы просто добавить:
FontFamily="{StaticResource OpenSansFont}"
и не упоминать семейство шрифтов во всех местах (пример:
<Label FontWeight="Bold">SomeBoldedLabel</Label>
)
!!! Важно !!! Поскольку все три файла .ttf имеют одинаковое имя шрифта внутри: FontName = "Open Sans"
, я смог отлично использовать жирный шрифт, itali c и обычные шрифты, просто добавив один FontFamily для окна и используя FontWeight
или FontStyle
свойств, чтобы указать, будет ли текст полужирным или италийским c.
Так что теперь я пытаюсь использовать другое семейство шрифтов, которое снова имеет Полужирный, Итали c и Обычный стилей, но, к сожалению, эти .ttf
файлы имеют разные имена шрифтов внутри.
Я нашел решение для этого случая, которое мне кажется очень неудобным: я добавил разные FontFamily для каждого стиля (полужирный, itali c, обычный) и в каждом использовании я указываю, какой fontFamily использовать.
<FontFamily x:Key="MyFontBold">pack://application:,,,/MyApp;component/Resources/MyFont/#MyFont Bold</FontFamily>
<FontFamily x:Key="MyFontRegular">pack://application:,,,/MyApp;component/Resources/MyFont/#MyFont Regular</FontFamily>
<FontFamily x:Key="MyFontItalic">pack://application:,,,/MyApp;component/Resources/MyFont/#MyFont Italic</FontFamily>
Использование:
<Label FontFamily="{StaticResource MyFontBold}">SomeBoldedLabel</Label>
<Label FontFamily="{StaticResource MyFontRegular}">SomeRegularLabel</Label>
<Label FontFamily="{StaticResource MyFontItalic}">SomeItalicLabel</Label>
Теперь вопрос:
Не могу ли я избежать каждый раз упоминания FontFamily и каким-то образом объединить эти 3 шрифта в одну FontFamily с одинаковым fontName в каждом файле .ttf?