比较两个字体集

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");
}