如何使用 C# Windows 窗体应用程序以编程方式在用户的 PC 上安装新字体,以便我可以在此应用程序包含的报告中使用此字体?
问问题
6912 次
2 回答
4
您可以尝试使用此代码库AddFontResource
[DllImport("gdi32.dll", EntryPoint="AddFontResourceW", SetLastError=true)]
public static extern int AddFontResource([In][MarshalAs(UnmanagedType.LPWStr)]
string lpFileName);
代码
//Install the font.
result = AddFontResource(@"C:\MY_FONT_LOCATION\MY_NEW_FONT.TTF");
error = Marshal.GetLastWin32Error();
if (error != 0)
{
Console.WriteLine(new Win32Exception(error).Message);
}
else
{
Console.WriteLine((result == 0) ? "Font is already installed." :
"Font installed successfully.");
}
于 2012-09-11T19:00:19.500 回答
0
此函数仅为当前会话安装字体。当系统重新启动时,字体将不存在。要在重新启动系统后安装字体,必须在注册表中列出字体。
所以我发现最好的选择是将字体复制到windows字体目录
File.Copy("MyNewFont.ttf",
Path.Combine(Environment.GetFolderPath(SpecialFolder.Windows),
"Fonts", "MyNewFont.ttf"));
然后在注册表中添加相应的条目,比如
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts");
key.SetValue("My Font Description", "fontname.tff");
key.Close();
于 2014-07-12T15:28:35.270 回答