Обходной путь для Mono PrivateFontCollection.Ошибка AddFontFile

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

EDIT: в качестве реакции на ответ приспешника я опубликую код:

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 ответов


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

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