Обходной путь для ошибки Mono PrivateFontCollection.AddFontFile - PullRequest
10 голосов
/ 22 февраля 2010

Когда я вызываю метод PrivateFontCollection.AddFontFile в Mono.net, он всегда возвращает стандартное семейство шрифтов. Об этой ошибке уже сообщалось на нескольких сайтах, но, насколько мне известно, без способа ее устранения. Сама ошибка еще не исправлена ​​в Mono-библиотеках. Есть ли обходной путь для этого?

РЕДАКТИРОВАТЬ: В ответ на ответ приспешника я выложу код:

PrivateFontCollection pfc = new PrivateFontCollection();
pfc.AddFontFile("myFontFamily.ttf");
myFontFamily = pfc.Families[0x00];
Font myFont = new Font(myFontFamily,14.0f);

Я знаю, что этот код будет хорошо работать на платформе Microsoft.Net, но при выполнении на Mono он просто дает стандартное семейство шрифтов (я думаю, это Arial) с именем myFontFamily.ttf

1 Ответ

1 голос
/ 13 марта 2010

Нашел этот пост от гугла. Если это утешит, я столкнулся с той же проблемой с AddMemoryFont (отлично работает в Windows, mono дает мне общий шрифт.) Если это утешает, похоже, это проблема Mono, а не вашего кода.

При просмотре исходного кода System.Windows.Drawing.PrivateFontCollection в основном представляет собой просто обертку вокруг GDIPlus.GdipPrivateAddFontFile, которая сама является оберткой вокруг FcConfigAppFontAddFile fontconfig. Причина, по которой он не выдает никаких ошибок, состоит в том, что GDIplus не проверяет возвращаемое значение из fontconfig, поэтому кажется, что fontconfig не может прочитать шрифт по какой-либо причине, но GDIplus не знает об этом Так же как и PrivateFontCollection.

...