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

StackOverflow https://stackoverflow.com/questions/2307860

  •  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 тоже.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top