我想为我的.net 3.0 Winforms应用程序使用非标准字体。
这个字体可能安装在我的某些用户的计算机上,但在其他一些计算机上显然会丢失。
如何使用我的程序发送字体?我需要安装字体吗?如果是这样,缺少管理员权限会成为一个问题吗?
答案 0 :(得分:3)
您必须使用安装程序才能获取目标计算机上注册的字体。但也许你不必,GDI +支持private fonts。
答案 1 :(得分:3)
这是我写的一篇博客文章,展示了一种在应用程序中嵌入字体作为资源的方法(无需导入dll:)。
Embedding Fonts in your .Net Application
这是我创造的所有魔法所在的课程。博客文章包含说明和使用它的示例。
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
}
}
答案 2 :(得分:1)
This page详细解释了如何将字体嵌入winforms项目中。