2013-08-15 2 views
7

Я не могу понять, как определить, как правильно визуализировать шрифт OpenType в WPF (.NET 4.5/VS2012/Windows 8). У меня есть шрифт, установленный на моем компьютере под названием «DINPro-BlackItalic».WPF не отображает имя шрифта Windows OpenType

Имя файла: DINPro-BlackItalic.otf

Windows, сообщает имя шрифта: DINPro-BlackItalic

Windows Font preview for DINPro-BlackItalic

В WPF я сделать что-то простое, как это:

<TextBlock Text="This is a sample sentence in DINPro-BlackItalic" 
       FontFamily="DinPro-BlackItalic" FontSize="24" /> 

или FontFamily="#DinPro-BlackItalic"

Это не работает (явно не курсивом), и оно возвращается к шрифту по умолчанию. Я пробовал множество других вариантов, которые работают для других шрифтов в каталоге шрифтов.

Например, Comic Sans работы: FontFamily="Comic Sans MS" (удивительный ...)

Теперь, вот почему я действительно путают: Если я просто предполагаю, что на другой способ перемежать имя шрифта, он делает правильно!

Это работает: FontFamily="Din Pro Black Italic"

В общем, вот снимок экрана различных настроек FontFamily в WPF: Several FontFamily settings in WPF

Два вопроса:

1) Как я должен догадаться,, чтобы сказать WPF о том, чтобы сделать этот шрифт? У него должно быть какое-то каноническое имя, зарегистрированное где-то, но оно не отображается в имени файла, свойствах файла или имени шрифта, которое сообщает Windows после того, как он проанализировал файл.

2) Что еще хуже, что, если я пытаюсь сделать то же шрифт в настольном приложении и на веб-браузеры, как Chrome на Windows, и даже IE ожидать «DINPro-BlackItalic» и не будет оказывать разнесенная версия имени. Кажется, что WPF и браузеры окон делают взаимно исключающим решениями о том, какое имя шрифта использовать для индексации шрифтов. Как мне обойти это для произвольных шрифтов?

DINPro Font rendering in Chrome and IE

ответ

0

Для WPF, лучше попробовать с дизайнером для выбора шрифта для TextBlock

для браузеров, может быть судимым с ярлыка или любой другой пользовательский интерфейс управления для отображения.

4

Вы можете упаковать шрифт с помощью приложения, и вы можете ссылаться на него из каталога проекта. Скажите, если вы поместите шрифт внутри Fonts Directory в Project.

Вы можете добавить следующим образом,

<TextBlock FontFamily=”/Fonts/DINPro-BlackItalic.otf#DinPro-BlackItalic”/> 

Таким образом, вы можете быть уверены, шрифт развертывается с приложением.

1

Хорошо, так что я думаю, я нашел решение ..

<TextBlock FontFamily=”/Fonts/DINPro-BlackItalic.otf#Din Pro”/> 

или

<TextBlock FontFamily=”/Fonts/DINPro-BlackItalic.otf#Din Pro Black Italic”/> 

havn't попробовал ваш код, но при этом, казалось, работали для меня .. Реферирования стези file + fontname

Файлы открытого ключа имеют общее имя, которое они разделяют. И здесь это становится сложно, потому что вы можете видеть это имя только в том случае, если вы устанавливаете шрифт на свой компьютер и проверяете его в familytree. Как вы показали, прежде чем ваш вопрос:

FontFamily="Din Pro Black Italic" 

Это мой опыт, а не 100% уверен, что я правильно, только то, что он работает для меня :)

0

Синтаксис, который работает для меня:

/{Application Name};component/{Font Folder in Project}/#{Font Name (not filename)} 

Пример:

/ApplicationName;component/Fonts/#Proxima Nova Lt 
Смежные вопросы