我正在从文件系统加载字体。通常情况下,我的代码运行得很好,但是由于我通过PrivateFontCollection加载字体,所以加载的FontFamily名称是字体中Typeface的名称(在Windows字体预览器中可以看到)。而不是FontFamily名称...因为我有一些字体具有相同的Typeface名称但另外一个字体名称,所以我希望能够区分它们。有人知道如何获取真正的FontFamily名称吗?
public Dictionary<string, FontFamily> LoadFontsFromDirectory(string path)
{
Dictionary<string, FontFamily> foundFonts = new Dictionary<string, FontFamily>();
if (!Directory.Exists(path)) throw new Exception("directory doesnt exist");
foreach(FileInfo fi in new DirectoryInfo(path).GetFiles("*.ttf"))
{
PrivateFontCollection fileFonts = new PrivateFontCollection();
fileFonts.AddFontFile(fi.FullName);
if (!foundFonts.ContainsKey(fileFonts.Families[0].Name))
{
//add the font only if this fontfamily doesnt exist yet
FontFamily family = new FontFamily(String.Format("file:///{0}#{1}", fi.FullName, fileFonts.Families[0].Name));
foundFonts.Add(family.Name, family);
}
}
return foundFonts;
}