【问题标题】:Compare two font collections比较两个字体集合
【发布时间】:2021-12-18 16:16:40
【问题描述】:

我正在尝试比较两个字体集合,以了解哪些字体已安装,哪些未安装。

代码如下:

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 中已经安装了一些字体而一些没有安装,但是控制台输出显示每个字体文件都没有安装。 我错过了什么?我想我的逻辑有问题,但我不明白问题出在哪里......

【问题讨论】:

    标签: c# fonts


    【解决方案1】:

    包含检查它是否与 == 相同,但您必须检查名称是否相同。

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

    【讨论】:

    • 编译器说'InstalledFontCollection'没有方法'Any'
    • NVM,col.Families.Any 有效。非常感谢您的提示!
    • 我的错,修好了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多