Swi*_*age 12 .net deployment fonts winforms
是否有官方方法使用.NET应用程序分发(部署)特定字体?
我们有一个(公共领域)"LED字体",用复古的LED仪表面打印数字.这是一个标准的True Type或Open Type字体,除了它看起来很时髦.
显然,为了工作,这个字体需要在用户的机器上.但我们宁愿不强迫用户"将我们的特殊字体安装到您的字体文件夹中".我们更喜欢直接从TTF加载Font对象,或者以编程方式安装字体以使其可用.
应用程序如何处理这类事情?例如,我注意到Adobe XYZ在系统上安装了各种字体而无需用户干预.这就是我们想做的事情.
编辑:好的,理想,我们宁愿不直接安装字体.我们不希望我们漂亮的主题LED字体显示在用户的MS Word字体下拉列表中.我们更喜欢使用此字体,但限制其使用或外观到我们的应用程序.有什么办法吗?
编辑2:这是一个WinForms .NET 2.0应用程序.
谢谢!
小智 14
我使用自定义字体上一个asp.net网站我的自定义图形库,但是这应该也是在WinForm的工作,没有问题.您只需指定font-file,font-size和font-style,并返回font-type.
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;
}
Run Code Online (Sandbox Code Playgroud)
LoadedFont是一个简单的结构
public struct LoadedFont
{
public Font Font { get; set; }
public FontFamily FontFamily { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是为了防止FontFamily被GC和字体不起作用(asp.net,我不知道winform上是否需要它).
| 归档时间: |
|
| 查看次数: |
8483 次 |
| 最近记录: |