字体文件中的字体系列名称

时间:2010-03-23 05:23:33

标签: c# font-family

我有一个.ttf文件,我想检索字体系列名称。

2 个答案:

答案 0 :(得分:2)

这最容易通过导入System.Windows.Media命名空间来完成,这使得您可以使用更多的API,并且比从ByteArray中获取字体更简单的API

using System.Windows.Media;

String fontFilePath = "PATH TO YOUR FONT";
GlyphTypeface glyphTypeface = new GlyphTypeface(fontFileURI);
String fontFamily = glyphTypeface.Win32FamilyNames[new System.Globalization.CultureInfo("en-us")];
String fontFace = glyphTypeface.Win32FaceNames[new System.Globalization.CultureInfo("en-us")];

Console.WriteLine("Font: " + fontFamily + " " + fontFace);

答案 1 :(得分:1)

以下是我过去使用的内容,这是针对Web应用程序的,所以可能并不完全是您想要的。 Font ttf文件也存储在数据库中。您需要将[FONTASBYTEARRAY]替换为实际的字节[]。

将ttf文件放入字体对象可能有更好的方法,但这应该可以让你开始。

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Text;
using System.Runtime.InteropServices;

namespace Utility
{
    public class Font
    {
        public string GetFont(byte[] [FONTASBYTEARRAY])
        {
            PrivateFontCollection fc = new PrivateFontCollection();
            IntPtr pointer = Marshal.UnsafeAddrOfPinnedArrayElement([FONTASBYTEARRAY], 0);
            fc.AddMemoryFont(pointer, Convert.ToInt32([FONTASBYTEARRAY].Length));
            System.Drawing.Font f = new System.Drawing.Font(fc.Families[0], 10);
            FontFamily ff = f.FontFamily;
            return ff.Name;
        }
    }
}