gpt4 book ai didi

.net - 在 .NET 应用程序中嵌入/部署自定义字体

转载 作者:行者123 更新时间:2023-12-02 20:56:48 24 4
gpt4 key购买 nike

是否有官方方法可以使用 .NET 应用程序分发(部署)特定字体?

我们有一个(公共(public)领域)“LED 字体”,可以用复古 LED 仪表面外观打印数字。这是一种标准的 True Type 或 Open Type 字体,与其他字体一样,只是它看起来很时髦。

显然,要使其正常工作,该字体需要位于用户的计算机上。但我们不希望强制用户“将我们的特殊字体安装到您的字体文件夹中”。我们更愿意直接从 TTF 加载 Font 对象,或者以编程方式安装字体以使其可用。

应用程序如何处理这类事情?例如,我注意到 Adob​​e XYZ 在系统上安装了各种字体,无需用户干预。这就是我们想做的。

编辑:好吧,理想情况,我们不希望直接安装字体。我们不希望漂亮的主题 LED 字体出现在 MS Word 中用户的字体下拉列表中。我们更愿意使用此字体,但将其使用或外观限制在我们的应用程序中。有办法做到这一点吗?

编辑 2:这是针对 WinForms .NET 2.0 应用程序的。

谢谢!

最佳答案

我在 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 被 GC 和字体无法工作(asp.net,我不知道 winform 上是否需要)。

关于.net - 在 .NET 应用程序中嵌入/部署自定义字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3007805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com