Встраивание/развертывание пользовательского шрифта в приложении.NET

Существует ли официальный способ распределить (развертывают) определенный шрифт с приложением.NET?

У нас есть (общественное достояние) "светодиодный шрифт", который печатает числа с ретро светодиодом instrumentface взгляд. Это - стандартный Истинный Тип, или Открытый Печатный шрифт как любой другой кроме него выглядит броским.

Очевидно, чтобы это работал, этот шрифт должен быть на машине пользователя. Но мы предпочли бы не вынуждать пользователя "установить наш специальный шрифт в Вашу папку шрифта". Мы предпочли бы или загружать объект Шрифта непосредственно из TTF или программно устанавливать шрифт, таким образом, это доступно.

Как приложения обрабатывают этот вид вещей? Например, я замечаю, что Adobe XYZ устанавливает различные шрифты в системе без вмешательства пользователя. Это - то, что мы хотели бы сделать.

Править: хорошо, идеально, мы предпочли бы не устанавливать шрифт непосредственно. Мы не хотим наш изящный тематический светодиодный шрифт, обнаруживающийся в шрифте пользователя, выпадающем в MS Word. Мы предпочли бы использовать этот шрифт, но ограничивать его использование или появление к нашему приложению. Какой-либо способ сделать это?

РЕДАКТИРОВАНИЕ 2: Это - для.NET WinForms 2,0 приложения.

Спасибо!

12
задан Swingline Rage 9 June 2010 в 17:30
поделиться

2 ответа

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

public static LoadedFont LoadFont(FileInfo file, int fontSize, FontStyle fontStyle)
{
    var fontCollection = new PrivateFontCollection();
    fontCollection.AddFontFile(file.FullName);
    if (fontCollection.Families.Length < 0)
    {
        throw new InvalidOperationException("No font familiy found when loading font");
    }

    var loadedFont = new LoadedFont();
    loadedFont.FontFamily = fontCollection.Families[0];
    loadedFont.Font = new Font(loadedFont.FontFamily, fontSize, fontStyle, GraphicsUnit.Pixel);
    return loadedFont;
}

LoadedFont - это простая структура.

public struct LoadedFont
{
    public Font Font { get; set; }
    public FontFamily FontFamily { get; set; }
}

Это необходимо для предотвращения сборки FontFamily, а шрифт не работает (asp.net, я не знаю, нужен ли он для winform).

14
ответ дан 2 December 2019 в 19:52
поделиться

Для приложения WPF вы можете добавить его в качестве ресурса.

См. здесь

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

3
ответ дан 2 December 2019 в 19:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: