2012-08-09 265 views
8

假设有一个.ttf(True Type字体)文件。您可以通过点击将其安装在窗口上。字体的真实名称不是在.tff之前的文本(可以说是SuperFont.ttf =>所以名称不是“SuperFont” - 它可以是,但大多不是)。我想读取.tff(以某种方式?)并获取字体的名称(不安装字体)。有任何想法吗?获取.ttf文件的字体名称

+1

这里是ttf ref手册https://developer.apple.com/fonts/TTRefMan/index.html – albertjan 2012-08-09 14:13:43

回答

22

您需要将字体添加到私有集合(PrivateFontCollection),然后请求FontFamily实例并获取其Name属性。

像这样:

PrivateFontCollection fontCol = new PrivateFontCollection(); 
fontCol.AddFontFile(@"PATH TO FONT"); 
Console.WriteLine(fontCol.Families[0].Name); 

你需要的命名空间:

using System.Drawing; 
using System.Drawing.Text; 

MSDN:PrivateFontCollectionFontFamily

+1

_(没有安装字体)_ – 2012-08-09 14:17:46

+3

这不会安装字体。虽然MSDN使用术语“安装”,但他们正在使用它。 “'这是一个临时字体安装,不会影响系统安装的集合。”“这里安装基本上意味着”加载“。 – 2012-08-09 14:18:49

+0

对,没有意识到。 – 2012-08-09 14:19:46

3

下面是另一个代码来提取字体名,而无需使用System.Drawing中dll

foreach (FontFamily fontFamily in Fonts.GetFontFamilies("file:///D:/MyFonts/")) 
{ 
    string name = fontFamily .ToString().Split('#')[fontFamily .ToString().Split('#').Count() - 1]; 
} 
+0

FontFamily在System.Drawing.dll中... – 2016-10-13 00:40:47