С# - Как использовать пользовательский шрифт без его установки в систему

Еще раз мне нужна ваша помощь.

Я разрабатываю небольшое приложение на С#, которое использует специальный шрифт. Проблема в том, что шрифт должен быть установлен ранее в системе. Если шрифт отсутствует в системе, он просто использует Times New Roman. Есть ли способ вставить файл шрифта в приложение, поэтому его не нужно устанавливать в каждой системе?

Спасибо.

Ответ 1

Если вы все еще читаете это, я могу указать, что вам не нужно использовать небезопасный код для загрузки шрифта из ресурса. Вот пример использования маршала.

PrivateFontCollection _fonts = new PrivateFontCollection();

byte[] fontData = Resources.CustomFontResourceName;

IntPtr fontPtr = Marshal.AllocCoTaskMem(fontData.Length);

Marshal.Copy(fontData, 0, fontPtr, fontData.Length);

_fonts.AddMemoryFont(fontPtr, fontData.Length);

Marshal.FreeCoTaskMem(fontPtr);

Font customFont = new Font(_fonts.Families[0], 6.0F);

Ответ 2

Обратите внимание: если вы используете AddMemoryFont, вам нужно будет использовать этот api-вызов "AddFontMemResourceEx" или он не будет работать.

PrivateFontCollection дает мне символы