Обходной путь для ошибки Mono PrivateFontCollection.AddFontFile
-
22-09-2019 - |
Вопрос
Когда я вызываю метод PrivateFontCollection.AddFontFile в Mono.net, он всегда возвращает стандартное семейство шрифтов.Об этой ошибке уже сообщалось на нескольких сайтах, но, насколько мне известно, способа ее решения нет.Сама ошибка в монобиблиотеках пока не исправлена.Есть ли обходной путь?
РЕДАКТИРОВАТЬ:В качестве реакции на ответ приспешника выложу код:
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.
Решение
Нашел этот пост в Google.Если это вас утешит, то у меня та же проблема с AddMemoryFont (отлично работает в Windows, mono дает мне общий шрифт). Если это вас утешает, то похоже, что это проблема с Mono, а не с вашим кодом.
Если покопаться в исходном коде, то System.Windows.Drawing.PrivateFontCollection в основном представляет собой просто оболочку GDIPlus.GdipPrivateAddFontFile, которая сама по себе является оболочкой FcConfigAppFontAddFile из Fontconfig.Причина, по которой он не выдает никаких ошибок, заключается в том, что GDIplus не проверяет возвращаемое значение из Fontconfig, поэтому кажется, что Fontconfig не может прочитать шрифт по какой-либо причине, но GDIplus не знает об этом. , поэтому PrivateFontCollection тоже.