比较两个字体集
Compare two font collections
我正在尝试比较两个字体集,以了解哪些字体已安装,哪些未安装。
代码如下:
var workingdir = new DirectoryInfo(Path.Combine(basepath, directory));
InstalledFontCollection col = new InstalledFontCollection();
PrivateFontCollection pcol = new PrivateFontCollection();
foreach (FileInfo fontname in workingdir.GetFiles("*.ttf"))
{
pcol.AddFontFile(fontname.FullName);
}
foreach (var item in pcol.Families)
{
if (col.Families.Contains(item))
{
Console.WriteLine(item.Name + " already installed");
}
else
{
Console.WriteLine(item.Name + " NOT INSTALLED");
}
}
问题是我确定在我的 workingdir
中已经安装了一些字体,但控制台输出显示每个字体文件都没有安装。
我错过了什么?我想我的逻辑有问题,但我不明白问题出在哪里...
包含检查它是否与 == 是同一对象,但您必须检查名称是否相同。
var workingdir = new DirectoryInfo(Path.Combine(basepath, directory));
var col = new InstalledFontCollection();
var pcol = new PrivateFontCollection();
foreach (var fontname in workingdir.GetFiles("*.ttf"))
{
pcol.AddFontFile(fontname.FullName);
}
foreach(var item in pcol.Families.Where(a => col.Families.Any(b => b.Name == a.Name)))
{
Console.WriteLine($"'{item.Name}' already installed");
}
我正在尝试比较两个字体集,以了解哪些字体已安装,哪些未安装。
代码如下:
var workingdir = new DirectoryInfo(Path.Combine(basepath, directory));
InstalledFontCollection col = new InstalledFontCollection();
PrivateFontCollection pcol = new PrivateFontCollection();
foreach (FileInfo fontname in workingdir.GetFiles("*.ttf"))
{
pcol.AddFontFile(fontname.FullName);
}
foreach (var item in pcol.Families)
{
if (col.Families.Contains(item))
{
Console.WriteLine(item.Name + " already installed");
}
else
{
Console.WriteLine(item.Name + " NOT INSTALLED");
}
}
问题是我确定在我的 workingdir
中已经安装了一些字体,但控制台输出显示每个字体文件都没有安装。
我错过了什么?我想我的逻辑有问题,但我不明白问题出在哪里...
包含检查它是否与 == 是同一对象,但您必须检查名称是否相同。
var workingdir = new DirectoryInfo(Path.Combine(basepath, directory));
var col = new InstalledFontCollection();
var pcol = new PrivateFontCollection();
foreach (var fontname in workingdir.GetFiles("*.ttf"))
{
pcol.AddFontFile(fontname.FullName);
}
foreach(var item in pcol.Families.Where(a => col.Families.Any(b => b.Name == a.Name)))
{
Console.WriteLine($"'{item.Name}' already installed");
}