记录一下如何在winform下安装系统不存在的字体:
/// <summary>
/// 遍历字体
/// </summary>
private static void SearchFonts()
{
InstalledFontCollection MyFont = new InstalledFontCollection();
FontFamily[] MyFontFamilies = MyFont.Families;
List<string> installedFontNames = new List<string>();
int Count = MyFontFamilies.Length;
for (int i = 0; i < Count; i++)
{
string FontName = MyFontFamilies[i].Name;
installedFontNames.Add(FontName);
}
string fontDir = Application.StartupPath + "\\Resources";
if (Directory.Exists(fontDir))
{
string[] fontFiles = Directory.GetFiles(fontDir);
foreach (string fontFile in fontFiles)
{
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fontFile);
if (!installedFontNames.Contains(fileNameWithoutExtension))
{
InstallFont(fontFile);
}
}
}
}
/// <summary>
/// 安装字体
/// </summary>
/// <param name="fontPath"></param>
private static void InstallFont(string fontPath)
{
string fontFileName = Path.GetFileName(fontPath);
string fontNameWithoutExtenstion = Path.GetFileNameWithoutExtension(fontPath);
string WinFontDir = Environment.GetEnvironmentVariable("WINDIR") + "\\fonts";
string FontPath = WinFontDir + "\\" + fontFileName;
if (!File.Exists(FontPath))
{
File.Copy(fontPath, FontPath);
AddFontResource(FontPath);
WriteProfileString("fonts", fontNameWithoutExtenstion + "(TrueType)", fontFileName);
}
}