Могу ли я объединить несколько шрифтов в одном FontFamily в приложении WPF - PullRequest
0 голосов
/ 17 марта 2020

BackStory

Я пытался использовать внешний шрифт в своем приложении WPF и упаковать его с моим приложением.

Мне удалось использовать шрифт OpenSans , используя указанную процедуру в этом ответе ( PackagingFontWithApplication )

Я сделал следующее:

  1. Я добавил папку "OpenSans" в приложение Ресурсы forlder с 3 .ttf файлами внутри List item
  2. Я добавил это семейство шрифтов в мой файл 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...