powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как указать ссылку на шрифт в используемую библиотеку
2 сообщений из 2, страница 1 из 1
Как указать ссылку на шрифт в используемую библиотеку
    #38953861
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас реализовано так: new Typeface(new FontFamily(new Uri("pack://application:,,,/Astro;Component/Fonts")

Но, как оказалось все корректно отображалось из-за того, что шрифт установлен.
Попробовал на другой машине и там уже не работает.

Особенность в том, что основная программа использует библиотеку моих контролов.
Т.е в основной программе если использовать шрифт, то все работает, а если этот же шрифт попробовать использовать в библиотеки, то не работает.
Сам шрифт находится в проекте.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как указать ссылку на шрифт в используемую библиотеку
    #39787514
alexfarm2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такой код работает:
FontFamily ff = new FontFamily(new Uri("pack://application:,,,/ResourceLibrary;component/Fonts/"), "./#Bayern");
Typeface columnHeaderTypeface = new Typeface(ff,FontStyles.Normal,FontWeights.Normal, FontStretches.Normal);
Правда, именно в этом шрифте русские буквы остаются почти такими же, как в обычных шрифтах (типа Verdana), но вид латинских букв изменяется просто до неузнаваемости (по сравнению с обычными шрифтами).
Здесь файл шрифта Bayern.ttf помещен в папку Fonts библиотеки ResourceLibrary с указанием действие при сборке - Resource, копировать в выходной каталог - Не копировать.
Свойству FontFamily.BaseUri (если посмотреть в отладчике) содержит значение
pack://application:,,,/ResourceLibrary;component/Fonts/
Uri корневого каталога приложения: pack://application:,,,
Uri корневого каталога библиотеки: /ResourceLibrary;component/
Можно еще сделать так:
1) В библиотечном проекте ResourceLibrary создать папку Dictionaries,
создать в этой папке папку Dictionaries_Fonts

3) Создать в ней файл Dictionary_Fonts.xaml с таким содержанием:
<ResourceDictionary xmlns=" http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x=" http://schemas.microsoft.com/winfx/2006/xaml">
<FontFamily x:Key="Bayern">/ResourceLibrary;component/Fonts/#Bayern</FontFamily>
</ResourceDictionary>

4) В папку App.xaml основного проекта в раздел <ResourceDictionary.MergedDictionaries> добавить строку:
<ResourceDictionary Source="/ResourceLibrary;component/Dictionaries/Dictionaries_Fonts/Dictionary_Fonts.xaml"/>

5) Чтобы сослаться на шрифт, в разметке можно написать:
<Label Name="label1" FontSize="40" FontFamily="{StaticResource Bayern}"> This is an embedded font</Label>

6) Чтобы программно изменить шрифт, нужно написать такой обработчик для кнопки:
label1.FontFamily = new FontFamily(new Uri("pack://application:,,,/ResourceLibrary;component/Fonts/"), "./#Bayern");
Здесь BaseUri имеет значение
pack://application:,,,/ResourceLibrary;component/Fonts/

7) или альтернативный, тоже рабочий вариант:
label1.FontFamily = new FontFamily(new Uri("pack://application:,,,/ResourceLibrary;component/"), "./Fonts/#Bayern");
Здесь BaseUri имеет значение
pack://application:,,,/ResourceLibrary;component/Fonts/

8) Все это, если шрифт находится в сторонней библиотеке. А если шрифт находится в корневой папке основного приложения (и
оформлен как ресурс), то работает такая разметка:
<Label Name="tst" FontSize="40" FontFamily="./#Bayern"
>This is an embedded font</Label>
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как указать ссылку на шрифт в используемую библиотеку
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]