Обходной путь для ошибки 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
Ответы
Ответ 1
Нашел этот пост из Google. Если это какое-то утешение, я испытываю ту же проблему с AddMemoryFont (отлично работает в Windows, mono дает мне общий шрифт.) Если это какое-то утешение, похоже, это проблема с Mono, а не с вашим кодом.
Копаясь через источник, System.Windows.Drawing.PrivateFontCollection в основном представляет собой оболочку вокруг GDIPlus.GdipPrivateAddFontFile, которая сама является оберткой вокруг fontconfig FcConfigAppFontAddFile. Причина, по которой он не вызывает каких-либо ошибок, заключается в том, что GDIplus не проверяет возвращаемое значение из fontconfig, поэтому кажется, что fontconfig не умеет читать шрифт по какой-либо причине, но GDIplus не знает об этом, так что PrivateFontCollection не делает.