我们使用第三方PDF生成器库,要求您在使用14或左右以外的字体时指定TrueType或Type1文件名,这些字体是默认PDF标准的一部分。
因此,如果我想使用Bitstream Arrus Bold
,我必须知道参考arrusb.ttf
。
如果没有枚举字体文件夹中的所有文件并创建一次性PrivateFontCollection来提取关系,是否有办法从字体信息中获取基础字体名称,即给定Courier New,Bold,Italic derived {{1 }}?
我已经查看了InstalledFontCollection,但没有任何内容。
答案 0 :(得分:5)
如果您不介意在注册表中查看,请查看
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts
它有像
这样的对Name = "Arial (TrueType)"
Data = "arial.ttf"
您可以执行以下必要的查询:
static RegistryKey fontsKey =
Registry.LocalMachine.OpenSubKey(
@"Software\Microsoft\Windows NT\CurrentVersion\Fonts");
static public string GetFontFile(string fontName)
{
return fontsKey.GetValue(fontName, string.Empty) as string;
}
对GetFontFile("Arial (TrueType)")
的调用会返回"arial.ttf"
您当然可以修改代码以将(TrueType)
部分附加到fontName
,或查看fontsKey.GetValueNames()
返回的所有内容以找到最佳匹配。