Как я могу связать шрифт с моим приложением.net winforms?

Я хотел бы использовать нестандартный шрифт для моего приложения Winnet.net 3.0.

Этот шрифт может быть установлен на некоторых компьютерах моего пользователя, но на некоторых других он явно отсутствует.

Как я могу отправить шрифт с моей программой? Нужно ли устанавливать шрифт? Если да, будет ли проблема с отсутствием прав администратора?

3 ответа

Вам нужно будет использовать установщик, чтобы зарегистрировать шрифт на целевом компьютере. Но, возможно, вам не придется, GDI+ поддерживает частные шрифты.

Вот статья в блоге, которую я написал, которая показывает способ встраивания шрифтов в качестве ресурсов в ваше приложение (нет необходимости в импорте DLL:).

Встраивание шрифтов в ваше приложение.Net

Вот класс, который я создаю, где происходит вся магия. Статья в блоге содержит инструкции и пример ее использования.

using System.Drawing;
using System.Drawing.Text;
using System.Runtime.InteropServices;
namespace EmbeddedFontsExample.Fonts
{
    public class ResFonts
    {
        private static PrivateFontCollection sFonts;
        static ResFonts()
        {
            sFonts = new PrivateFontCollection();
            // The order the fonts are added to the collection 
            // should be the same as the order they are added
            // to the ResFontFamily enum.
            AddFont(MyFonts.Consolas);
        }
        private static void AddFont(byte[] font)
        {
            var buffer = Marshal.AllocCoTaskMem(font.Length);
            Marshal.Copy(font, 0, buffer, font.Length);
            sFonts.AddMemoryFont(buffer, font.Length);
        }
        public static Font Create(
            ResFontFamily family, 
            float emSize, 
            FontStyle style = FontStyle.Regular, 
            GraphicsUnit unit = GraphicsUnit.Pixel)
        {
            var fam = sFonts.Families[(int)family];
            return new Font(fam, emSize, style, unit);
        }
    }
    public enum ResFontFamily
    {
        /// <summary>Consolas</summary>
        Consolas = 0
    }
}

На этой странице подробно объясняется, как встроить шрифт в проект winforms.

Другие вопросы по тегам