Подтвердить что ты не робот

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

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

РЕДАКТИРОВАТЬ: Как реакция на ответ ханчмана, я отправлю код:

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

4b9b3361

Ответ 1

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

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