2016-10-12 2 views
1

Я использую следующий код для загрузки шрифта в память для формирования изображения с GDI +:Загрузка семейство шрифтов с диска PrivateFontCollection

var fontCollection = new PrivateFontCollection(); 
fontCollection.AddFontFile(Server.MapPath("~/fonts/abraham-webfont.ttf")); 
fontCollection.Families.Count(); // => This line tells me, that the collection has 0 items. 

Там нет исключений, но свойство fontCollection семьи пусто после того, как метод AddFontFile работает без каких-либо исключений.

Я проверил, что путь является действительным (File.Exists возвращает true):

Response.Write(System.IO.File.Exists(Server.MapPath("~/fonts/abraham-webfont.ttf"))); // # => Renders "True" 

TTF-файл, кажется, работает хорошо, когда я открываю файл, так что это не инвалид TTF-файл: https://dl.dropboxusercontent.com/u/4899329/2016-10-12_22-44-52.png

Любые предложения?

+0

Вы делаете это на локальном хосте или этапе/производстве env с дополнительными путями? – Nathan

+2

PrivateFontCollection является, как известно, чешуйчатым. Один из режимов сбоя, который сегодня довольно распространен, - это шрифт OpenType с контурами TrueType. GDI + поддерживает только «чистые». Обувь подходит, в Интернете говорится, что Abraham является шрифтом OpenType. Работает в WPF, а не в Winforms. –

+0

@HansPassant Спасибо! Пожалуйста, отправьте этот комментарий в качестве ответа, чтобы я мог его принять. Проблема заключалась в том, что шрифт - не код. – Martin

ответ

1

Ответ от Hans Passant решил проблему:

PrivateFontCollection, как известно, странное поведения. Один из режимов сбоя, который сегодня довольно распространен, - это шрифт OpenType с контурами TrueType. GDI + поддерживает только «чистые». Обувь подходит, в Интернете говорится, что Abraham является шрифтом OpenType. Работает в WPF, а не в Winforms.